summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2019-10-12 23:40:15 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2019-10-14 15:14:25 +0200
commitbc35ccd1740a588293b5a2eb5bbe936f837f6c21 (patch)
tree623b9c076ba2716189368cb3a5acc0a6f54d1232
parent36944e1009e932902269d3eab547e0b19da13468 (diff)
downloadlvm2-bc35ccd1740a588293b5a2eb5bbe936f837f6c21.tar.gz
cache: recognize cachevol with lv_cache_remove
-rw-r--r--lib/metadata/cache_manip.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/metadata/cache_manip.c b/lib/metadata/cache_manip.c
index e4cd34560..e444e37b7 100644
--- a/lib/metadata/cache_manip.c
+++ b/lib/metadata/cache_manip.c
@@ -758,6 +758,7 @@ int lv_cache_remove(struct logical_volume *cache_lv)
struct lv_segment *cache_seg = first_seg(cache_lv);
struct logical_volume *corigin_lv;
struct logical_volume *cache_pool_lv;
+ cache_mode_t cache_mode;
int is_clear;
if (!lv_is_cache(cache_lv)) {
@@ -783,7 +784,9 @@ int lv_cache_remove(struct logical_volume *cache_lv)
if (!deactivate_lv_with_sub_lv(cache_lv))
return_0;
- switch (first_seg(cache_seg->pool_lv)->cache_mode) {
+ cache_mode = (lv_is_cache_pool(cache_seg->pool_lv)) ?
+ first_seg(cache_seg->pool_lv)->cache_mode : cache_seg->cache_mode;
+ switch (cache_mode) {
case CACHE_MODE_WRITETHROUGH:
case CACHE_MODE_PASSTHROUGH:
/* For inactive pass/writethrough just drop cache layer */