From 22b1415b4365dad7c4023ccced8d90e0df446964 Mon Sep 17 00:00:00 2001 From: n0mad1k Date: Fri, 10 Jul 2026 14:37:40 -0400 Subject: [PATCH] Guard probe_target against creating phantom mountpoint dir probe_target() unconditionally ran mkdir(parents=True) on TARGET_DIR. When TARGET_DIR sits under an unmounted FUSE drive, this materialized the mount root (e.g. ~/pCloudDrive) as a plain local directory, occupying the mountpoint and blocking the pCloud client from ever mounting. Add optional mount_root config key (env COE_MIRROR_MOUNT_ROOT). When set, probe_target requires the path to be a live mountpoint and TARGET_DIR to be under it before any mkdir; otherwise it returns False and the run queues to pending. Unset preserves prior behavior for local targets. --- notes.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/notes.md b/notes.md index f9643af..db72e84 100644 --- a/notes.md +++ b/notes.md @@ -20,3 +20,11 @@ - Env overrides: `COE_MIRROR_MATRIX_ROOM`, `COE_MIRROR_MATRIX_HOMESERVER`. - Pre-deploy step: invite `@intel-bot:m.mealeyfamily.com` to General once Synapse is back. Without joined membership, sends will 403. - DevTrack: #1172. + +## 2026-07-10 — mount_root guard (phantom pCloudDrive fix) + +- **Bug**: `probe_target()` did `TARGET_DIR.mkdir(parents=True, exist_ok=True)` unconditionally. When pCloud FUSE was unmounted, this created `~/pCloudDrive/...` as plain LOCAL dirs, occupying the mountpoint and blocking the pCloud client from mounting. Live state on carbon confirmed: `~/pCloudDrive` was a plain dir, not a mountpoint, with 22 stray zips inside. +- **Fix**: new optional config key `mount_root` (env `COE_MIRROR_MOUNT_ROOT`). When set, `probe_target()` requires `os.path.ismount(mount_root)` AND that `TARGET_DIR` is under `mount_root` before any mkdir; otherwise returns False (queues to pending). Never creates the mount root. Empty/unset = old behavior (local targets like `~/coe-mirror`). +- Local config sets `mount_root = "~/pCloudDrive"`. +- **Recovery run**: stopped/masked timer, staged the 22 zips aside, removed the local `~/pCloudDrive`, relaunched pCloud, verified mountpoint, moved zips onto the live mount, unmasked timer. +- DevTrack: #1307.