summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2016-03-01 15:25:28 +0100
committerPeter Rajnoha <prajnoha@redhat.com>2016-03-03 13:49:15 +0100
commitf545dd5952ee0b191ae2cda2d7b6f304442debab (patch)
tree09c0b559c1b8f5540c39c24e86913f8fcd82e85f
parent9a34de9cb9c1e8585f11bbb79bc447fdbdf7ea31 (diff)
downloadlvm2-f545dd5952ee0b191ae2cda2d7b6f304442debab.tar.gz
metadata: honour 'nohistory' switch when removing thin LVs
When --nohistory switch is used with lvremove, the LV that is removed is not recorded in metadata as 'historical LV'.
-rw-r--r--lib/metadata/pool_manip.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/metadata/pool_manip.c b/lib/metadata/pool_manip.c
index ac590b385..d2856ae02 100644
--- a/lib/metadata/pool_manip.c
+++ b/lib/metadata/pool_manip.c
@@ -215,10 +215,17 @@ static int _set_up_historical_lv(struct lv_segment *seg_to_remove,
{
struct generic_logical_volume *glv = NULL;
- if (seg_to_remove->origin || seg_to_remove->indirect_origin ||
- dm_list_size(&seg_to_remove->lv->segs_using_this_lv) ||
- dm_list_size(&seg_to_remove->lv->indirect_glvs)) {
- if (!(glv = _create_historical_glv(seg_to_remove)))
+ if (seg_to_remove->lv->vg->cmd->record_historical_lvs) {
+ if (seg_to_remove->origin || seg_to_remove->indirect_origin ||
+ dm_list_size(&seg_to_remove->lv->segs_using_this_lv) ||
+ dm_list_size(&seg_to_remove->lv->indirect_glvs)) {
+ if (!(glv = _create_historical_glv(seg_to_remove)))
+ return_0;
+ }
+ } else {
+ if (seg_to_remove->indirect_origin &&
+ !remove_glv_from_indirect_glvs(seg_to_remove->indirect_origin,
+ seg_to_remove->lv->this_glv))
return_0;
}