diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2019-08-26 13:28:00 +0200 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2019-08-26 15:32:12 +0200 |
commit | c98e34e4d0edbcb2594e93f06183838de0c6e2bc (patch) | |
tree | 1afe4f74ccd7fe14c26ae2015bcf79ade1ea343a | |
parent | af0b84ccc850d619eddef5112753731abce099ed (diff) | |
download | lvm2-c98e34e4d0edbcb2594e93f06183838de0c6e2bc.tar.gz |
cache: improve vgremove loop
Support internal removal of 'cache origin' volume - which we
do not normally expose to a user - however internal processing
loops may hit this condition (depending on order of list LVs).
So when this operation is internally requested - we automatically
try to remove it's 'holding' LV (cache LV) - which will also
remove the origin.
-rw-r--r-- | WHATS_NEW | 1 | ||||
-rw-r--r-- | lib/metadata/lv_manip.c | 7 |
2 files changed, 8 insertions, 0 deletions
@@ -1,5 +1,6 @@ Version 2.03.06 - ================================ + Improve internal removal of cached devices. Synchronize with udev when dropping snapshot. Add missing device synchronization point before removing pvmove node. Correctly set read_ahead for LVs when pvmove is finished. diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c index 6aee947b9..af3a16fe2 100644 --- a/lib/metadata/lv_manip.c +++ b/lib/metadata/lv_manip.c @@ -6544,6 +6544,13 @@ int lv_remove_with_dependencies(struct cmd_context *cmd, struct logical_volume * return 0; } + if (lv_is_cache_origin(lv)) { + if (!_lv_remove_segs_using_this_lv(cmd, lv, force, level, "cache origin")) + return_0; + /* Removal of cache LV also removes caching origin */ + return 1; + } + if (lv_is_external_origin(lv) && !_lv_remove_segs_using_this_lv(cmd, lv, force, level, "external origin")) return_0; |