aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2019-04-01 17:44:20 +0000
committerKyle Evans <kevans@FreeBSD.org>2019-04-01 17:44:20 +0000
commite1ee62302a50aff33edfd3f8487baee199cab9ec (patch)
treece69916de4c56523fd02ae493c669e94d52b25ad /lib
parent8f462da4f3cf6cabcbac87c971634bcdec12fe06 (diff)
Notes
Diffstat (limited to 'lib')
-rw-r--r--lib/libbe/be.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/lib/libbe/be.c b/lib/libbe/be.c
index 13c1f66d36280..103ce2aa7ce71 100644
--- a/lib/libbe/be.c
+++ b/lib/libbe/be.c
@@ -265,6 +265,16 @@ be_destroy(libbe_handle_t *lbh, const char *name, int options)
zfs_prop_get(fs, ZFS_PROP_ORIGIN, origin, sizeof(origin),
NULL, NULL, 0, 1) != 0)
return (set_error(lbh, BE_ERR_NOORIGIN));
+
+ /* Don't destroy a mounted dataset unless force is specified */
+ if ((mounted = zfs_is_mounted(fs, NULL)) != 0) {
+ if (force) {
+ zfs_unmount(fs, NULL, 0);
+ } else {
+ free(bdd.snapname);
+ return (set_error(lbh, BE_ERR_DESTROYMNT));
+ }
+ }
} else {
if (!zfs_dataset_exists(lbh->lzh, path, ZFS_TYPE_SNAPSHOT))
return (set_error(lbh, BE_ERR_NOENT));
@@ -280,16 +290,6 @@ be_destroy(libbe_handle_t *lbh, const char *name, int options)
}
}
- /* Check if mounted, unmount if force is specified */
- if ((mounted = zfs_is_mounted(fs, NULL)) != 0) {
- if (force) {
- zfs_unmount(fs, NULL, 0);
- } else {
- free(bdd.snapname);
- return (set_error(lbh, BE_ERR_DESTROYMNT));
- }
- }
-
err = be_destroy_cb(fs, &bdd);
zfs_close(fs);
free(bdd.snapname);