aboutsummaryrefslogtreecommitdiff
path: root/cddl/contrib
diff options
context:
space:
mode:
authorAndriy Gapon <avg@FreeBSD.org>2016-04-03 07:42:13 +0000
committerAndriy Gapon <avg@FreeBSD.org>2016-04-03 07:42:13 +0000
commit329e9bafe425f14acad7668170bc1f983c19af9c (patch)
tree469d99d8ec3a38e2111874b895e06f3565b6a9d6 /cddl/contrib
parent34082fa0f8c7330abf073475c9b0bb6ef34dce95 (diff)
downloadsrc-329e9bafe425f14acad7668170bc1f983c19af9c.tar.gz
src-329e9bafe425f14acad7668170bc1f983c19af9c.zip
fix zfs set canmount=off on an unmounted filesystem
Previously this operation tried to unmount and remount children. Also see https://www.illumos.org/issues/6428. MFC after: 2 weeks X-Needs-Upstreaming: illumos
Notes
Notes: svn path=/head/; revision=297521
Diffstat (limited to 'cddl/contrib')
-rw-r--r--cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
index 504db96f8283..4ed7c2bce567 100644
--- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
+++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
@@ -1633,8 +1633,9 @@ zfs_prop_set_list(zfs_handle_t *zhp, nvlist_t *props)
* its canmount property to 'on' or 'noauto'. We only use
* the changelist logic to unmount when setting canmount=off.
*/
- if (!(prop == ZFS_PROP_CANMOUNT &&
- fnvpair_value_uint64(elem) != ZFS_CANMOUNT_OFF)) {
+ if (prop != ZFS_PROP_CANMOUNT ||
+ (fnvpair_value_uint64(elem) == ZFS_CANMOUNT_OFF &&
+ zfs_is_mounted(zhp, NULL))) {
cls[cl_idx] = changelist_gather(zhp, prop, 0, 0);
if (cls[cl_idx] == NULL)
goto error;