May 2May 2 Community Expert TL;DR: After upgrading 7.2.4 → 7.2.5 and rebooting (first reboot in ~3 weeks), emhttpd is silently skipping the shfs invocation during array start. /mnt/user is left as a rootfs stub with only the four hard-coded system stub directories (appdata, domains, isos, system). Failure persists across downgrade, Safe Mode, and stock-minimum boot. Underlying disk data is fully intact — every byte of every share is accessible via /mnt/disk1–/mnt/disk21 and /mnt/cache. This is purely a missing user-share namespace, not lost data. Below troubleshooting was done with the help of AI and from my knowledge of anything that was changed recently.Bug report is filed (link below), but I'm posting here separately because someone in the community may have hit this and have a fix. Server has been down for nearly a day, including Nextcloud sync (active dev work) and a Home Assistant VM (home automation).The forensic smoking gunIn a normal boot, emhttpd invokes shfs via an shcmd entry around shcmd 220–221, which mounts /mnt/user as fuse.shfs. Then services start.What I'm seeing instead, on every boot:shcmd (219): /usr/local/sbin/update_cron ← last pre-shfs cmd ← 13 seconds of silence, no log entries emhttpd: Starting services... ← services start anyway shcmd (221): chmod 0777 '/mnt/user/appdata' ← chmodding rootfs stubThe shcmd numbering shifts boot-to-boot based on optional steps, but the missing entry is always the shfs invocation. No error message. No failure message. No log entry of any kind during those 13 silent seconds. emhttpd proceeds to "Starting services" as if user shares were enabled, then runs chmod against the rootfs stub.Because shfs isn't running, when Docker/libvirt autostart they create fake docker.img (500GB sparse) and libvirt.img (1GB) in RAM at /mnt/user/system/... instead of pointing at the real images on cache. The real images on /mnt/cache/system/ are untouched and intact.Hardware / configUnraid 7.2.4 (originally 7.2.5, downgraded — failure mode identical)21-disk XFS array, 2 parity, ~156TBSingle 2TB Samsung 860 PRO XFS cache pool (no ZFS pools on this server)21 legitimate shares: 4 system (appdata, domains, isos, system), 15 user-defined (Books, Movies, TV Shows, Music, etc.), 2 anomalous (8hszb7dd_rlib.cfg, lost+found.cfg)Plugins: ca.mover.tuning, dynamix.cache.dirs, unassigned.devices-plus, ca.backup, user.scripts, dockerMan, parity.check.tuning, fix.common.problems, recycle.bin, prometheus_node_exporter, tailscale, unbalanced, folderview.plus, dynamix.cron, nvidia-driverThings I've eliminated#HypothesisTestResult17.2.5 regressionTools → Downgrade OS to 7.2.4Same failure on 7.2.4, but it started with the upgrade reboot2FUSE not loadeddmesg | grep fuseinit (API version 7.41) — loaded fine3Plugin interferenceBoot in Safe Mode (all plugins disabled)Same failure4User Scripts raceDisabled frequency=start scriptSame failure5Loose files at /mnt/cache rootQuarantined 30 .md/.txt/.tsv filesSame failure6shareUser="e" config corruptionCompared to working backup; toggled in GUI"e" is correct/expected for "yes" in this version7Cache xattr support brokensetfattr test on /mnt/cachexattr works fine875 orphaned "Books deleted" ghost share configsQuarantined ghosts + 2 anomalous, leaving only 19 legitimate configsSame failure (ghosts were also in the working Apr 27 backup)9Flash config drift since last working stateDiffed full /boot/config/ against Apr 27 backup zipConfigs byte-identical for share.cfg, disk.cfg, pools/cache.cfg10Hardware faultSMART check, mount testsAll disks healthy11Stale tmpfs / parity-check race (per [other forum thread])Stopped Docker/libvirt, wiped /mnt/user to canonical empty nobody:users 0777, rebooted with no parity check runningSame failure, identical 13-second silent gap12Custom /boot/config/go file (had ffmpeg symlinks under /mnt/user/appdata/)Replaced with absolute stock minimum (just /usr/local/sbin/emhttp), verified no rc.local, no plugin boot scripts anywhereSame failureWhat's intact (helpful for triage)Cache pool mounted, XFS healthy, all data presentAll 21 array disks mounted, XFS healthy, all data presentReal docker.img and libvirt.img on cache untouchedAll Nextcloud and other appdata at /mnt/cache/appdata/ intact/boot/config/ configuration intactMy askIf anyone has hit this exact symptom — emhttpd deterministically and silently skipping shfs invocation, with /mnt/user reduced to four stubs — I'd love to know:What was the eventual fix?Was there a specific file, setting, or state on the flash that triggered it?Is there a known-safe strace procedure on emhttpd during boot anyone can share?Bug report with full diagnostics: bug report - diagnostics on 7.2.5 and after rollback to 7.2.4 attached below as well.Happy to run any diagnostic the community suggests. Server is in a stable broken state — array up, all data accessible via disk shares, no risk of further damage.Thanks for reading this far.tower-diagnostics-20260501-1700.zip tower-diagnostics-Broken-725-Downgrade-20260501_0619.zip Edited May 2May 2 by abhi.ko
May 2May 2 Author Community Expert Solution RESOLVED. Root cause was a self-heal cron entry I'd added to /boot/config/plugins/dynamix/nextcloud.cron four days earlier — its OR-fallback (docker exec ... || mkdir -p /mnt/user/appdata/...) ran during boot when Docker wasn't up yet, polluting rootfs before shfs could mount. emhttpd then silently skipped shfs invocation as a safety measure. Removed the dangerous cron entry and shfs mounted cleanly on the next reboot. Lesson: any cron touching /mnt/user/ paths must guard against the boot-time race since crond starts before Docker. Had to dig through every change I made in the last 2-3 weeks one-by-one and try re-voting after removing each of them. Finally figured it out.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.