mrc0mmand / rpms / lvm2

Forked from rpms/lvm2 2 years ago
Clone

Blame SOURCES/lvm2-2_02_178-locking-exclusive-can-be-either-remote-or-local.patch

f0aa83
 WHATS_NEW               | 1 +
f0aa83
 lib/activate/activate.c | 5 ++++-
f0aa83
 2 files changed, 5 insertions(+), 1 deletion(-)
f0aa83
f0aa83
diff --git a/WHATS_NEW b/WHATS_NEW
f0aa83
index 762553f..776c739 100644
f0aa83
--- a/WHATS_NEW
f0aa83
+++ b/WHATS_NEW
f0aa83
@@ -1,5 +1,6 @@
f0aa83
 Version 2.02.178 - 
f0aa83
 =====================================
f0aa83
+  Do not report LV as remotely active when it's locally exclusive in cluster.
f0aa83
   Add deprecate messages for usage of mirrors with mirrorlog.
f0aa83
   Restore pvmove support for wide-clustered active volumes (2.02.177).
f0aa83
   Avoid non-exclusive activation of exclusive segment types.
f0aa83
diff --git a/lib/activate/activate.c b/lib/activate/activate.c
f0aa83
index 7a37130..b67e7b1 100644
f0aa83
--- a/lib/activate/activate.c
f0aa83
+++ b/lib/activate/activate.c
f0aa83
@@ -1543,8 +1543,11 @@ static int _lv_is_active(const struct logical_volume *lv,
f0aa83
 	if (skip_cluster_query)
f0aa83
 		goto out;
f0aa83
 
f0aa83
-	if ((r = cluster_lock_held(lv->lvid.s, "", &e)) >= 0)
f0aa83
+	if ((r = cluster_lock_held(lv->lvid.s, "", &e)) >= 0) {
f0aa83
+		if (l && e)
f0aa83
+			r = 0; /* exclusive locally */
f0aa83
 		goto out;
f0aa83
+	}
f0aa83
 
f0aa83
 	/*
f0aa83
 	 * If lock query is not supported (due to interfacing with old