Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F108238607
D19650.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D19650.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D19650: Don't check if the dataset is mounted when destroying a snapshot (libbe)
Attached
Detach File
Event Timeline
Log In to Comment