I had a bug in my nfs server... just after boot, all clients were receiving

"Permission denied" until I run "restart nfs-kernel-exports". "exportfs -ra" did not help.

I tracked that down to some race condition between loading the module nfsd and
starting the daemons. Therefore, I decided to add nfsd to the boot.kernelModules instead
of using modprove with it.

Now it works for my server. No more Permission denied after reboot.


svn path=/nixos/trunk/; revision=31113
This commit is contained in:
Lluís Batlle i Rossell 2011-12-27 18:08:05 +00:00
parent 8bc381c4cd
commit ef1755f3c0

View File

@ -112,6 +112,14 @@ in
target = "exports";
});
/* We have to load this quite before running the daemons. Using
"modprobe nfsd" when loading the daemons causes a race condition where
nfsd can return 'authentication failed'/'Permission denied'.
I've not tried with nfsd alone. So I add what I tried, with nfs_acl too.
*/
boot.kernelModules = mkIf cfg.server.enable [ "nfsd" "nfs_acl" ];
jobs =
optionalAttrs cfg.server.enable
{ nfs_kernel_exports =
@ -119,7 +127,7 @@ in
description = "Kernel NFS server";
startOn = "started network-interfaces and started portmap";
startOn = "started network-interfaces and started portmap and filesystem";
postStart =
''
@ -147,9 +155,6 @@ in
# Create a state directory required by NFSv4.
mkdir -p /var/lib/nfs/v4recovery
# rpc.nfsd needs the kernel support
${config.system.sbin.modprobe}/sbin/modprobe nfsd || true
${pkgs.sysvtools}/bin/mountpoint -q /proc/fs/nfsd \
|| ${config.system.sbin.mount}/bin/mount -t nfsd none /proc/fs/nfsd