Reproduced in Bionic and Focal, packages 1:1.3.4-2.1ubuntu5.2 and 1:1.3.4-2.5ubuntu3 respectively.
Steps to reproduce:
1) Set up a ISCSI client to a 1GB+ volume, mount it /data and set fstab to mount at boot
2) Create a folder in /data like /data/dir1 and set up /etc/exports to export it
3) Reboot
4) Notice nfs-server does not start. Check journalctl and see it was because of "exportfs -r" returning -1 because /data/dir1 is not available.
In Xenial (1:1.2.8-9ubuntu12.2), exportfs always returns 0, so this bug is not present there.
This can be workaroundable in two ways:
1) Editing nfs-server.service and adding "-" in "ExecStartPre=/usr/sbin/exportfs -r" to be "ExecStartPre=-/usr/sbin/exportfs -r". This will retain xenial behavior.
2) Editing nfs-server.service and removing "Before=remote-fs-pre.target" and adding "RequiresMountsFor=/data". This will cause the systemd service load ordering to change, and nfs-server will wait for /data to be available.
#2 is the upstream approach with commit [0] where this new comment identifies mount dependencies and automatically sets up RequiresMountFor.
Reproduced in Bionic and Focal, packages 1:1.3.4- 2.1ubuntu5. 2 and 1:1.3.4-2.5ubuntu3 respectively.
Steps to reproduce:
1) Set up a ISCSI client to a 1GB+ volume, mount it /data and set fstab to mount at boot
2) Create a folder in /data like /data/dir1 and set up /etc/exports to export it
3) Reboot
4) Notice nfs-server does not start. Check journalctl and see it was because of "exportfs -r" returning -1 because /data/dir1 is not available.
In Xenial (1:1.2. 8-9ubuntu12. 2), exportfs always returns 0, so this bug is not present there.
This can be workaroundable in two ways:
1) Editing nfs-server.service and adding "-" in "ExecStartPre= /usr/sbin/ exportfs -r" to be "ExecStartPre= -/usr/sbin/ exportfs -r". This will retain xenial behavior.
2) Editing nfs-server.service and removing "Before= remote- fs-pre. target" and adding "RequiresMounts For=/data" . This will cause the systemd service load ordering to change, and nfs-server will wait for /data to be available.
#2 is the upstream approach with commit [0] where this new comment identifies mount dependencies and automatically sets up RequiresMountFor.
[0] http:// git.linux- nfs.org/ ?p=steved/ nfs-utils. git;a=commitdif f;h=4776bd05994 20f9d073c9e2601 ed438062dccd19