All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Do not count VG_GLOBAL to lock_count.
@ 2009-07-10 14:10 Milan Broz
  2009-07-10 16:09 ` Dave Wysochanski
  0 siblings, 1 reply; 3+ messages in thread
From: Milan Broz @ 2009-07-10 14:10 UTC (permalink / raw)
  To: lvm-devel

Do not count VG_GLOBAL to lock_count.

Otherwise all read-only scanning will open devices RW.
because of
	flags = vg_write_lock_held() ? O_RDWR : O_RDONLY;

(And trigger udev rule because of IN_CLOSE_WRITE monitoring).

Anyway, there are many other situations when lvm opens
device RW unnecessarily...

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

diff --git a/lib/locking/locking.c b/lib/locking/locking.c
index 5c04b4f..482cdf0 100644
--- a/lib/locking/locking.c
+++ b/lib/locking/locking.c
@@ -189,12 +189,16 @@ void reset_locking(void)
 		_unblock_signals();
 }
 
-static void _update_vg_lock_count(uint32_t flags)
+static void _update_vg_lock_count(const char *resource, uint32_t flags)
 {
 	if ((flags & LCK_SCOPE_MASK) != LCK_VG ||
 	    (flags & LCK_CACHE))
 		return;
 
+	/* Ignore global locks */
+	if (!strcmp(resource, VG_GLOBAL))
+		return;
+
 	if ((flags & LCK_TYPE_MASK) == LCK_UNLOCK)
 		_vg_lock_count--;
 	else
@@ -356,7 +360,7 @@ static int _lock_vol(struct cmd_context *cmd, const char *resource, uint32_t fla
 								== LCK_READ);
 		}
 
-		_update_vg_lock_count(flags);
+		_update_vg_lock_count(resource, flags);
 	}
 
 	_unlock_memory(flags);




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

end of thread, other threads:[~2009-07-13 15:42 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-10 14:10 [PATCH] Do not count VG_GLOBAL to lock_count Milan Broz
2009-07-10 16:09 ` Dave Wysochanski
2009-07-13 15:42   ` Milan Broz

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.