Page MenuHomeFreeBSD

D19650.diff
No OneTemporary

D19650.diff

Index: head/lib/libbe/be.c
===================================================================
--- head/lib/libbe/be.c
+++ head/lib/libbe/be.c
@@ -265,6 +265,16 @@
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));
@@ -277,16 +287,6 @@
if (fs == NULL) {
free(bdd.snapname);
return (set_error(lbh, BE_ERR_ZFSOPEN));
- }
- }
-
- /* 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));
}
}
Index: head/sbin/bectl/tests/bectl_test.sh
===================================================================
--- head/sbin/bectl/tests/bectl_test.sh
+++ head/sbin/bectl/tests/bectl_test.sh
@@ -123,12 +123,21 @@
zpool=$(make_zpool_name)
disk=${cwd}/disk.img
mount=${cwd}/mnt
+ root=${mount}/root
bectl_create_setup ${zpool} ${disk} ${mount}
atf_check bectl -r ${zpool}/ROOT create -e default default2
atf_check -o not-empty zfs get mountpoint ${zpool}/ROOT/default2
atf_check -e ignore bectl -r ${zpool}/ROOT destroy default2
atf_check -e not-empty -s not-exit:0 zfs get mountpoint ${zpool}/ROOT/default2
+
+ # Test origin snapshot deletion when the snapshot to be destroyed
+ # belongs to a mounted dataset, see PR 236043.
+ atf_check mkdir -p ${root}
+ atf_check -o not-empty bectl -r ${zpool}/ROOT mount default ${root}
+ atf_check bectl -r ${zpool}/ROOT create -e default default3
+ atf_check bectl -r ${zpool}/ROOT destroy -o default3
+ atf_check bectl -r ${zpool}/ROOT unmount default
}
bectl_destroy_cleanup()
{

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 23, 11:56 PM (20 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16068183
Default Alt Text
D19650.diff (2 KB)

Event Timeline