summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2015-08-21 14:03:02 +0200
committerPeter Rajnoha <prajnoha@redhat.com>2016-02-04 16:20:33 +0100
commit3c2a5faddf0fb1d5643cb67d1b4717d5c6f3dbed (patch)
tree6dc5a425f2549e68cfca2e100fd1980abbe87423
parentfbcff2833c77b9d691afc4f6474bb67f045f1da0 (diff)
downloadlvm2-3c2a5faddf0fb1d5643cb67d1b4717d5c6f3dbed.tar.gz
metadata: honour 'nohistory' switch when removing thin LVs
When --nohistory switch is used, the LV that is removed is not recorded in metadata. We still keep the "indirect_origin" and "indirect_users" relations complete though even if don't keep the dead LVs in history.
-rw-r--r--lib/metadata/pool_manip.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/metadata/pool_manip.c b/lib/metadata/pool_manip.c
index 53fbd1917..d3c87d610 100644
--- a/lib/metadata/pool_manip.c
+++ b/lib/metadata/pool_manip.c
@@ -274,8 +274,17 @@ int detach_pool_lv(struct lv_segment *seg)
}
}
- if (!(previous_glv = _create_dead_glv(seg)))
- return_0;
+ if (seg->lv->vg->cmd->record_dead_entities) {
+ if (!(previous_glv = _create_dead_glv(seg)))
+ return_0;
+ } else if (seg->origin) {
+ if (!(previous_glv = get_or_create_glv(seg->origin->vg->vgmem, seg->origin, NULL)))
+ return_0;
+ } else if (seg->indirect_origin) {
+ if (!remove_glv_from_indirect_user_list(seg->indirect_origin, seg->lv->this_glv))
+ return_0;
+ previous_glv = seg->indirect_origin;
+ }
if (!detach_thin_external_origin(seg))
return_0;