diff options
author | Don Brady <[email protected]> | 2020-08-20 14:12:12 -0600 |
---|---|---|
committer | GitHub <[email protected]> | 2020-08-20 13:12:12 -0700 |
commit | 7bba1d404cd213223cfca017035f9ebf8683a8ef (patch) | |
tree | 6a8f38f9f35c23fb40f69273c30167d6a7d7e9de /cmd | |
parent | 3dc18995bd408d3030d2928ae88c4546bc40c2c8 (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.c | 5 |
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); + } } /* |