[PR #5] [CLOSED] fix: FUSE stale mount on destroy, ENOSPC tier fallback, multi-destroy UI, remove region_size #7

Closed
opened 2026-10-15 12:51:14 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/games-on-whales/LXC2Docker/pull/5
Author: @JBailes
Created: 4/14/2026
Status: ❌ Closed

Base: main ← Head: fix/fuse-enospc-region-size-cleanup


📝 Commits (10+)

  • 26a458d Fix Wolf compatibility: CGO deadlocks, Docker state mapping, and missing inspect fields
  • 9f93476 Proxmox CT mode: wolf/wolf-den as PVE CTs, ephemeral on ZFS
  • 1ac053b Fix PVE deploy: hostname sanitization, basevol paths, raw network config
  • 46f8145 Dual-NIC LAN bridge: containers get routable IPs on physical network
  • 86c0fc1 Fix mDNS: make LAN bridge the primary NIC (net.0)
  • 3f864d9 Fix rootfs path for symlink resolution in ephemeral containers
  • 6b4c87d Fix stale Docker socket after daemon restart
  • 99264c0 Fix ephemeral container lifecycle and Docker API compatibility
  • a82ebdb Merge pull request #2 from games-on-whales/aimee/session/b86598a3
  • eb844b1 Ensure /run/wolf exists on boot for wolf LXC containers

📊 Changes

13 files changed (+1768 additions, -222 deletions)

View changed files

📝 Makefile (+3 -0)
📝 cmd/docker-lxc-daemon/main.go (+34 -3)
➕ deepdive.md (+94 -0)
📝 internal/api/containers.go (+114 -21)
📝 internal/api/router.go (+24 -0)
📝 internal/api/system.go (+52 -0)
📝 internal/api/types.go (+54 -41)
📝 internal/lxc/config.go (+525 -26)
📝 internal/lxc/manager.go (+776 -126)
📝 internal/lxc/network.go (+25 -1)
📝 internal/store/store.go (+7 -4)
➕ readme.md (+48 -0)
➕ systemd/wolf-run-dirs.conf (+12 -0)

📄 Description

Summary

  • FUSE stale mount on namespace destroy: DestroyNamespace now calls ClearStaleFuseMount after stopping the daemon, clearing the kernel's stale FUSE mount entry. Previously deleting a tier left /mnt/<name> occupied, blocking any attempt to recreate it with "already mounted".
  • ENOSPC tier fallback: openCreateObject now sorts tiers by rank and cascades through on ENOSPC — writes land on the next fastest tier with space instead of failing hard when the top tier is full.
  • Arrays multi-destroy dimming: Changed destroyingArray: string | null to destroyingArrays: Set<string> so all concurrently-destroyed array cards dim independently.
  • Remove region_size: Strip region_size_mb from the DB struct, CreateTierPool signature, all API request/response types, the UI form, and the lvm.RegionPEs helper that had no non-test callers. The DB column is left in place for deployed instances.

Test plan

  • Delete a tier pool, then immediately recreate it with the same name — should succeed without "already mounted" error
  • Fill the fastest tier to capacity, then write more data — should cascade to the next tier (HDD) instead of returning ENOSPC to the client
  • Trigger destroy on two arrays simultaneously — both cards should dim; each clears independently when its job completes
  • Create a tier — "Region Size" field is gone from the form; pool detail no longer includes region_size_mb

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/games-on-whales/LXC2Docker/pull/5 **Author:** [@JBailes](https://github.com/JBailes) **Created:** 4/14/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `fix/fuse-enospc-region-size-cleanup` --- ### 📝 Commits (10+) - [`26a458d`](https://github.com/games-on-whales/LXC2Docker/commit/26a458da471147f079d42596b016a48c8d5b12ff) Fix Wolf compatibility: CGO deadlocks, Docker state mapping, and missing inspect fields - [`9f93476`](https://github.com/games-on-whales/LXC2Docker/commit/9f93476eff215dad14b822921accb99a41ce40a7) Proxmox CT mode: wolf/wolf-den as PVE CTs, ephemeral on ZFS - [`1ac053b`](https://github.com/games-on-whales/LXC2Docker/commit/1ac053b6ff8514d259eb6dbb4305d529ca85fbf9) Fix PVE deploy: hostname sanitization, basevol paths, raw network config - [`46f8145`](https://github.com/games-on-whales/LXC2Docker/commit/46f814557a1ef102584117a689c3edfe4659f1a7) Dual-NIC LAN bridge: containers get routable IPs on physical network - [`86c0fc1`](https://github.com/games-on-whales/LXC2Docker/commit/86c0fc1cf2cda8c523a967c2110f544b4a9a62eb) Fix mDNS: make LAN bridge the primary NIC (net.0) - [`3f864d9`](https://github.com/games-on-whales/LXC2Docker/commit/3f864d91d8fc411757464d9ba83f588a2bb9fa63) Fix rootfs path for symlink resolution in ephemeral containers - [`6b4c87d`](https://github.com/games-on-whales/LXC2Docker/commit/6b4c87d546ccb47d4649b333ab7086b00e60f4ab) Fix stale Docker socket after daemon restart - [`99264c0`](https://github.com/games-on-whales/LXC2Docker/commit/99264c07b1f91f29d066ac977a2ccac9114f2703) Fix ephemeral container lifecycle and Docker API compatibility - [`a82ebdb`](https://github.com/games-on-whales/LXC2Docker/commit/a82ebdbe7912b7f5301e456d8741d2535c8ed7c8) Merge pull request #2 from games-on-whales/aimee/session/b86598a3 - [`eb844b1`](https://github.com/games-on-whales/LXC2Docker/commit/eb844b1633bb7847c78fbe7bb4f9666b82fb76b3) Ensure /run/wolf exists on boot for wolf LXC containers ### 📊 Changes **13 files changed** (+1768 additions, -222 deletions) <details> <summary>View changed files</summary> 📝 `Makefile` (+3 -0) 📝 `cmd/docker-lxc-daemon/main.go` (+34 -3) ➕ `deepdive.md` (+94 -0) 📝 `internal/api/containers.go` (+114 -21) 📝 `internal/api/router.go` (+24 -0) 📝 `internal/api/system.go` (+52 -0) 📝 `internal/api/types.go` (+54 -41) 📝 `internal/lxc/config.go` (+525 -26) 📝 `internal/lxc/manager.go` (+776 -126) 📝 `internal/lxc/network.go` (+25 -1) 📝 `internal/store/store.go` (+7 -4) ➕ `readme.md` (+48 -0) ➕ `systemd/wolf-run-dirs.conf` (+12 -0) </details> ### 📄 Description ## Summary - **FUSE stale mount on namespace destroy**: `DestroyNamespace` now calls `ClearStaleFuseMount` after stopping the daemon, clearing the kernel's stale FUSE mount entry. Previously deleting a tier left `/mnt/<name>` occupied, blocking any attempt to recreate it with "already mounted". - **ENOSPC tier fallback**: `openCreateObject` now sorts tiers by rank and cascades through on ENOSPC — writes land on the next fastest tier with space instead of failing hard when the top tier is full. - **Arrays multi-destroy dimming**: Changed `destroyingArray: string | null` to `destroyingArrays: Set<string>` so all concurrently-destroyed array cards dim independently. - **Remove region_size**: Strip `region_size_mb` from the DB struct, `CreateTierPool` signature, all API request/response types, the UI form, and the `lvm.RegionPEs` helper that had no non-test callers. The DB column is left in place for deployed instances. ## Test plan - [ ] Delete a tier pool, then immediately recreate it with the same name — should succeed without "already mounted" error - [ ] Fill the fastest tier to capacity, then write more data — should cascade to the next tier (HDD) instead of returning ENOSPC to the client - [ ] Trigger destroy on two arrays simultaneously — both cards should dim; each clears independently when its job completes - [ ] Create a tier — "Region Size" field is gone from the form; pool detail no longer includes `region_size_mb` --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-15 12:51:14 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
games-on-whales/LXC2Docker#7
No description provided.