All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Skip also special lvm devices in scan (if ignore suspended is used).
@ 2010-05-13 15:24 Milan Broz
  2010-05-13 15:28 ` Milan Broz
  2010-05-13 15:46 ` [PATCH v2] " Milan Broz
  0 siblings, 2 replies; 4+ messages in thread
From: Milan Broz @ 2010-05-13 15:24 UTC (permalink / raw)
  To: lvm-devel

This shoud avoid various races between dmeventd on multiple nodes
in cluster where one node already repairing device and another
run full scan and locks the device.

Signed-off-by: Milan Broz <mbroz@redhat.com>
---
 lib/activate/dev_manager.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index d52d46f..ccafc1e 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -130,7 +130,7 @@ int device_is_usable(dev_t dev)
 {
 	struct dm_task *dmt;
 	struct dm_info info;
-	const char *name;
+	const char *name, *uuid;
 	uint64_t start, length;
 	char *target_type = NULL;
 	char *params;
@@ -157,6 +157,7 @@ int device_is_usable(dev_t dev)
 		goto out;
 
 	name = dm_task_get_name(dmt);
+	uuid = dm_task_get_uuid(dmt);
 
 	/* FIXME Also check for mirror block_on_error and mpath no paths */
 	/* For now, we exclude all mirrors */
@@ -171,6 +172,11 @@ int device_is_usable(dev_t dev)
 
 	/* FIXME Also check dependencies? */
 
+	/* Check internal lvm devices */
+	if (!is_reserved_lvname(name) && uuid &&
+	    !strncmp(uuid, UUID_PREFIX, sizeof(UUID_PREFIX) - 1))
+		goto out;
+
 	r = 1;
 
       out:
-- 
1.7.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-05-13 19:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-13 15:24 [PATCH] Skip also special lvm devices in scan (if ignore suspended is used) Milan Broz
2010-05-13 15:28 ` Milan Broz
2010-05-13 15:46 ` [PATCH v2] " Milan Broz
2010-05-13 19:29   ` Petr Rockai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.