Skip to content

feat(fuse): cross-platform force unmount & mount health validation - #286

Merged
javi11 merged 1 commit into
mainfrom
feat/fuse-force-unmount-mount-validation
Feb 13, 2026
Merged

feat(fuse): cross-platform force unmount & mount health validation#286
javi11 merged 1 commit into
mainfrom
feat/fuse-force-unmount-mount-validation

Conversation

@javi11

@javi11 javi11 commented Feb 13, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Cross-platform ForceUnmount: Replace Linux-only implementation with macOS (umount -f, diskutil unmount force) and Linux (fusermount -uz, umount -l, fusermount3 -uz) support
  • Mount health validation: Add ValidateMount() that stat-checks the mount with a 5s timeout to detect stuck FUSE connections; status endpoint auto-corrects to "error" when unresponsive
  • Force-stop API endpoint: POST /api/fuse/force-stop bypasses graceful unmount and always resets manager state so users aren't stuck
  • Stop handler state fix: On unmount failure, resets status to "error" and clears server reference instead of leaving user permanently stuck in "running"
  • Response builder migration: All FUSE handlers now use unified response builders per project standards
  • Frontend: Force Unmount button with confirmation dialog, health_error display, proper error state handling
  • Config fixes: Disable RC server start for non-rclone mount types; disable RCEnabled when mount_type is "none" or "fuse"
  • Go 1.26.0: Bump Go version across CI, Docker, and docs

Test plan

  • go build ./... passes
  • cd frontend && bun run check passes (only pre-existing MetadataConfigSection lint issues)
  • Mount FUSE, verify status shows healthy: true
  • Stop via normal unmount, verify status returns to "stopped"
  • Simulate stuck mount, verify status auto-corrects to "error"
  • Verify force-stop endpoint resets state and unmounts
  • Verify force unmount button appears next to Unmount when FUSE is mounted
  • Verify force unmount button is sole action when status is "error"
  • Test on macOS: verify umount -f / diskutil unmount force commands are used

🤖 Generated with Claude Code

…, and force-stop API

- Replace Linux-only ForceUnmount with cross-platform implementation supporting
  macOS (umount -f, diskutil unmount force) and Linux (fusermount -uz, umount -l, fusermount3 -uz)
- Add ValidateMount() method that stat-checks mount point with 5s timeout to detect stuck FUSE
- Add POST /api/fuse/force-stop endpoint that bypasses graceful unmount and resets manager state
- Fix handleStopFuseMount to reset state to "error" on failure instead of leaving user stuck
- Enhance status endpoint to include mount health check with auto-correction to "error" status
- Migrate all fuse handler responses to unified response builders
- Add force unmount UI button in MountConfigSection with confirmation dialog
- Display health_error in mount status alert when mount is unresponsive
- Disable RC server start for non-rclone mount types
- Disable RCEnabled when mount_type is "none" or "fuse" in config validation
- Bump Go version to 1.26.0 across CI, Docker, and docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@javi11
javi11 merged commit 19d5411 into main Feb 13, 2026
1 check passed
@javi11
javi11 deleted the feat/fuse-force-unmount-mount-validation branch February 26, 2026 14:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant