diff --git a/hosts/skydick/datapool.nix b/hosts/skydick/datapool.nix index b910287..a6cf029 100644 --- a/hosts/skydick/datapool.nix +++ b/hosts/skydick/datapool.nix @@ -403,9 +403,19 @@ systemd.services.nfsd-rdma-listener = { description = "Enable NFS-over-RDMA listener on port 20049"; - after = [ "nfs-server.service" ]; - wants = [ "nfs-server.service" ]; - wantedBy = [ "multi-user.target" ]; + # `after` orders the unit at boot. + # `wants` brings it up when the target activates. + # `partOf` (NEW) propagates restart: whenever nfs-server.service + # cycles, systemd re-runs THIS unit's ExecStart. Without partOf + # the listener stays in "exited (success)" state, but nfsd's + # kernel-side portlist gets wiped on every nfs-server stop, so + # the RDMA port goes dead silently. Caught 2026-05-26 after a + # `nixos-rebuild switch` left port 20049 down for ~14h — every + # NFS-RDMA client (door-pek) hung on every mount-touching read. + after = [ "nfs-server.service" ]; + wants = [ "nfs-server.service" ]; + partOf = [ "nfs-server.service" ]; + wantedBy = [ "multi-user.target" "nfs-server.service" ]; serviceConfig = { Type = "oneshot"; RemainAfterExit = true;