Design 52: say the workstation's fstab line still mounts at boot until it is adopted, and can hold the boot 30 s
mesh/merge-gate pass: the change touches no module of the mesh's graph
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered
mesh/delivery-group group fix/shares-review-followups delivered: every member is delivered

This commit is contained in:
jochen
2026-10-08 21:14:34 +02:00
parent 4eb8be9e66
commit 4dd52cace6
+12 -4
View File
@@ -185,15 +185,23 @@ folders, none refused for a reason not understood.
2. **Assign `mounts` to the workstation, read-only.** Its `shares` is `library=<mount point>:ro`. Check 2. **Assign `mounts` to the workstation, read-only.** Its `shares` is `library=<mount point>:ro`. Check
`node-mounts.list`: the pair is armed, the share reads `armed` then `mounted` after a listing, and the `node-mounts.list`: the pair is armed, the share reads `armed` then `mounted` after a listing, and the
files are there. Its unit pair takes the place of the unit generated from fstab. files are there. Its unit pair takes the place of the unit generated from fstab.
**Until step 5 the hand-written fstab line still acts at boot.** The fstab generator still makes the
mount wanted by `remote-fs.target`, so at every boot the mount is started directly, not on access:
the module's `.mount` (which now carries the line's mount point) is pulled in at boot, can hold the
boot for up to its 30 s mount timeout, and fails when the home server is unreachable. The automount
protects only accesses after that. So step 5 follows soon after the share is seen working, and a
failed mount at boot in this window is expected, not a fault of the module.
*Undo:* unassign `mounts`; its unit pairs go, and the fstab line is still there. *Undo:* unassign `mounts`; its unit pairs go, and the fstab line is still there.
3. **Watch for a day.** `mounts_health` and `nfs_health` stay healthy; a reboot of the workstation 3. **Watch for a day.** `mounts_health` and `nfs_health` stay healthy, and a reboot of the workstation
completes with the home server's share reachable and with it stopped (the share reads `unreachable` with the home server's share reachable completes and mounts it. A reboot with the share unreachable
and the boot does not wait). still waits up to 30 s and fails the mount while the fstab line stands (step 2); that the boot does
not wait is checked again after step 5.
4. **Read-write.** Change the grant to `rw` and the workstation's setting to drop `:ro`. Write one test 4. **Read-write.** Change the grant to `rw` and the workstation's setting to drop `:ro`. Write one test
file from the workstation, check its owner on the home server is the library's owner, and remove it. file from the workstation, check its owner on the home server is the library's owner, and remove it.
*Undo:* set both back to `ro`. *Undo:* set both back to `ro`.
5. **Adopt the workstation's library line**: `node-mounts.adopt` dry run, read it, then with 5. **Adopt the workstation's library line**: `node-mounts.adopt` dry run, read it, then with
`confirm` and a reason. *Undo:* the dated copy of fstab beside it. `confirm` and a reason. From the next boot nothing starts the mount but an access, and a reboot with
the home server stopped completes without waiting. *Undo:* the dated copy of fstab beside it.
6. **Adopt the ZFS property**: `node-nfs-server.adopt` dry run, then confirmed. The home network's 6. **Adopt the ZFS property**: `node-nfs-server.adopt` dry run, then confirmed. The home network's
export goes; the mesh's stays. *Undo:* `zfs set sharenfs=<the old value>` by a person, recorded as a export goes; the mesh's stays. *Undo:* `zfs set sharenfs=<the old value>` by a person, recorded as a
hand-act. hand-act.