diff options
author | Peter Rajnoha <prajnoha@redhat.com> | 2015-08-21 14:03:02 +0200 |
---|---|---|
committer | Peter Rajnoha <prajnoha@redhat.com> | 2016-02-04 16:20:33 +0100 |
commit | 3c2a5faddf0fb1d5643cb67d1b4717d5c6f3dbed (patch) | |
tree | 6dc5a425f2549e68cfca2e100fd1980abbe87423 | |
parent | fbcff2833c77b9d691afc4f6474bb67f045f1da0 (diff) | |
download | lvm2-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.c | 13 |
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; |