summaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
authorDon Brady <[email protected]>2020-08-20 14:12:12 -0600
committerGitHub <[email protected]>2020-08-20 13:12:12 -0700
commit7bba1d404cd213223cfca017035f9ebf8683a8ef (patch)
tree6a8f38f9f35c23fb40f69273c30167d6a7d7e9de /cmd
parent3dc18995bd408d3030d2928ae88c4546bc40c2c8 (diff)
'zfs share -a' should clean noauto exports
This is a follow on to PR #10688 where `zfs share -a` allows the sharing of canmount=noauto datasets if they are mounted. However, when a dataset with canmount=noauto is not mounted, the command should also purge any existing entries from the exports file. Otherwise, after a reboot, the nfs server attempts to export the underlying mountpath, not the dataset. This can lead to a hard hang for existing client mounts. Instead of just skipping the adding of an export if not mounted and canmount=noauto, have it also remove an existing export of the dataset so that, after a reboot, we don't export an unmounted dataset. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: George Wilson <[email protected]> Signed-off-by: Don Brady <[email protected]> Closes #10747
Diffstat (limited to 'cmd')
-rw-r--r--cmd/zfs/zfs_main.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/cmd/zfs/zfs_main.c b/cmd/zfs/zfs_main.c
index 2878f03a3..650b4fc9b 100644
--- a/cmd/zfs/zfs_main.c
+++ b/cmd/zfs/zfs_main.c
@@ -6634,8 +6634,11 @@ share_mount_one(zfs_handle_t *zhp, int op, int flags, char *protocol,
*/
if (op == OP_MOUNT)
return (0);
- if (op == OP_SHARE && !zfs_is_mounted(zhp, NULL))
+ if (op == OP_SHARE && !zfs_is_mounted(zhp, NULL)) {
+ /* also purge it from existing exports */
+ zfs_unshareall_bypath(zhp, mountpoint);
return (0);
+ }
}
/*