From 00d49f78dfbf2ab1b5ecaaf4281d4d482d47f8c4 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Tue, 16 Nov 2021 21:11:01 +0100 Subject: [PATCH] nfsd.service: Order after mxmount.service Currently there is no order between nfsd.service and mxmount.service. If mxmount is slow (e.g. when file systems have to process their journals after a server crash), nfsd startup might execute `exportfs -ra` while the filesystems are not yet mounted, thereby exporting the unmounted mountpoints. This can result in mount failures on nfs clients or in "stale NFS handle" errors on clients, which had the filesystems mounted before the crash. mxmount.service uses `mxmount --noexport` so there is no reexport triggered, after the filesystems are mounted. nfsd.services executes additional `exportfs -ra` commands 10, 20 and 30 seconds after the nfsd startup, but 30 seconds might not be enough time to mount all filesystems after the crash of a fileserver. These errors can persist. They are partly resolved by a manual `exportfs -ra` after a longer time, making the file systems available for mounting. However, the "stale NFS handle" problem might still be visible on clients which picked up the now covered inodes of the mountpoints. Order nfsd.service after mxmount.service so that we don't export the mountpoints. --- misc_systemd_units/nfsd.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc_systemd_units/nfsd.service b/misc_systemd_units/nfsd.service index c1b8ecc0..91fa8ca4 100644 --- a/misc_systemd_units/nfsd.service +++ b/misc_systemd_units/nfsd.service @@ -2,7 +2,7 @@ Description=NFS Daemon ConditionPathExists=/etc/exports Requires=local-fs.target proc-fs-nfsd.mount var-lib-nfs-rpc_pipefs.mount -After=local-fs.target proc-fs-nfsd.mount var-lib-nfs-rpc_pipefs.mount unbound.service +After=local-fs.target proc-fs-nfsd.mount var-lib-nfs-rpc_pipefs.mount unbound.service mxmount.service Wants=unbound.service [Service]