From 2c7ad527f48aba3c243be3e43f405f0abb24a0bb 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 c1b8ecc..91fa8ca 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]