[lvm-devel] master - lvcreate: fix activation of cached LV

Zdenek Kabelac zkabelac at sourceware.org
Tue Mar 6 14:45:50 UTC 2018


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=23de09aeb87ec10bd1a553ea8868e2f946117232
Commit:        23de09aeb87ec10bd1a553ea8868e2f946117232
Parent:        b2f1254c14b7b86789e542be14041252a652eec2
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Mon Mar 5 12:54:39 2018 +0100
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Tue Mar 6 15:39:27 2018 +0100

lvcreate: fix activation of cached LV

Since LV for caching can be already a stacked LV, proper activation
needs to use lock holding LV.
---
 WHATS_NEW        |    1 +
 tools/lvcreate.c |    2 ++
 2 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/WHATS_NEW b/WHATS_NEW
index 49b995e..3ed3e5a 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.178 - 
 =====================================
+  Activate correct lock holding LV when it is cached.
   Do not modify archived metadata when removing striped raid.
   Fix memleak on error path when obtaining lv_raid_data_offset.
   Fix compatibility size test of extended external origin.
diff --git a/tools/lvcreate.c b/tools/lvcreate.c
index 7f86a37..e901968 100644
--- a/tools/lvcreate.c
+++ b/tools/lvcreate.c
@@ -1222,6 +1222,8 @@ static int _determine_cache_argument(struct volume_group *vg,
 			return_0; /* FIXME */
 
 		/* Put origin into resulting activation state first */
+		lv = (struct logical_volume *)lv_lock_holder(lv);
+
 		if (is_change_activating(lp->activate)) {
 			if ((lp->activate == CHANGE_AAY) &&
 			    !lv_passes_auto_activation_filter(cmd, lv)) {




More information about the lvm-devel mailing list