summaryrefslogtreecommitdiff
path: root/lib/metadata/lv_manip.c
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2021-03-14 13:18:45 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2021-03-15 11:11:35 +0100
commit5edb353062b26bbe93002717d77aa5d1707f1f70 (patch)
treeae52cfc078fb15b9e5e600cc527fe9d3affeeb51 /lib/metadata/lv_manip.c
parent0a2d7c57a1120045e1a93a63bc568dc1e3dbb734 (diff)
downloadlvm2-5edb353062b26bbe93002717d77aa5d1707f1f70.tar.gz
lvremove: use to_remove for snapshot removal
Reuse similar 'acceleration' as used for dependent volumes also for snapshot - so when origin is being removed with all thick snapshots, don't bother with individual 'COW' detachments and write&commits, and when possible handle this all within a single commit.
Diffstat (limited to 'lib/metadata/lv_manip.c')
-rw-r--r--lib/metadata/lv_manip.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 1d341eea2..6fc7afbac 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -6823,13 +6823,10 @@ static int _lv_remove_segs_using_this_lv(struct cmd_context *cmd, struct logical
yes_no_prompt("Removing %s \"%s\" will remove %u dependent volume(s). "
"Proceed? [y/n]: ", lv_type, lv->name,
dm_list_size(&lv->segs_using_this_lv)) == 'n') {
- log_error("Logical volume \"%s\" not removed.", lv->name);
- return 0;
- }
-
- /* Make aware users of this LV, it's going to be removed, so they
- * can skip any updates of itself */
- lv->to_remove = 1;
+ lv->to_remove = 0;
+ log_error("Logical volume \"%s\" not removed.", lv->name);
+ return 0;
+ }
/*
* Not using _safe iterator here - since we may delete whole subtree
@@ -6859,6 +6856,10 @@ int lv_remove_with_dependencies(struct cmd_context *cmd, struct logical_volume *
struct lv_list *lvl;
struct logical_volume *origin;
+ /* Make aware users of this LV, it's going to be removed, so they
+ * can skip any updates of itself */
+ lv->to_remove = 1;
+
if (!level && lv_is_cow(lv)) {
/*
* A merging snapshot cannot be removed directly unless