summaryrefslogtreecommitdiffstats
path: root/cddl
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2016-04-19 12:20:28 +0000
committeravg <avg@FreeBSD.org>2016-04-19 12:20:28 +0000
commit9d6f9c24b84fc92322029b7b648ec7772b1ad3aa (patch)
tree0dac81cb86f6c1d051f810d1afcba1d92be9ed00 /cddl
parentd59220bdf7d3648cc9ca738ee5e76cf100f80f5f (diff)
downloadFreeBSD-src-9d6f9c24b84fc92322029b7b648ec7772b1ad3aa.zip
FreeBSD-src-9d6f9c24b84fc92322029b7b648ec7772b1ad3aa.tar.gz
MFC r297521: fix zfs set canmount=off on an unmounted filesystem
No MFC to stable/9 because of a non-trivial merge conflict and no way to test the edited code.
Diffstat (limited to 'cddl')
-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 dd09928..5f7c171 100644
--- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
+++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
@@ -1627,8 +1627,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;
OpenPOWER on IntegriCloud