diff options
author | Peter Rajnoha <prajnoha@redhat.com> | 2016-03-01 15:25:28 +0100 |
---|---|---|
committer | Peter Rajnoha <prajnoha@redhat.com> | 2016-03-03 13:49:15 +0100 |
commit | f545dd5952ee0b191ae2cda2d7b6f304442debab (patch) | |
tree | 09c0b559c1b8f5540c39c24e86913f8fcd82e85f | |
parent | 9a34de9cb9c1e8585f11bbb79bc447fdbdf7ea31 (diff) | |
download | lvm2-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.c | 15 |
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; } |