From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15337 invoked by alias); 2 Feb 2011 20:04:40 -0000 Received: (qmail 15312 invoked by uid 9737); 2 Feb 2011 20:04:40 -0000 Date: Wed, 02 Feb 2011 20:04:00 -0000 Message-ID: <20110202200440.15310.qmail@sourceware.org> From: zkabelac@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2 daemons/clvmd/lvm-functions.c lib/locking ... Mailing-List: contact lvm2-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: lvm2-cvs-owner@sourceware.org X-SW-Source: 2011-02/txt/msg00004.txt.bz2 CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: zkabelac@sourceware.org 2011-02-02 20:04:39 Modified files: daemons/clvmd : lvm-functions.c lib/locking : no_locking.c Log message: Better fix for no-locking udev sync and clvmd This is better way how to fix clustered synchronization with udev. As the code for message passing needs fixed - put currently fs_unlock() after every active/deactive command in clvmd to ensure nodes are properly created in time. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/daemons/clvmd/lvm-functions.c.diff?cvsroot=lvm2&r1=1.106&r2=1.107 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/locking/no_locking.c.diff?cvsroot=lvm2&r1=1.25&r2=1.26 --- LVM2/daemons/clvmd/lvm-functions.c 2011/01/12 20:42:50 1.106 +++ LVM2/daemons/clvmd/lvm-functions.c 2011/02/02 20:04:39 1.107 @@ -507,6 +507,7 @@ switch (command & LCK_MASK) { case LCK_LV_EXCLUSIVE: status = do_activate_lv(resource, lock_flags, LCK_EXCL); + fs_unlock(); break; case LCK_LV_SUSPEND: @@ -520,10 +521,12 @@ case LCK_LV_ACTIVATE: status = do_activate_lv(resource, lock_flags, LCK_READ); + fs_unlock(); break; case LCK_LV_DEACTIVATE: status = do_deactivate_lv(resource, lock_flags); + fs_unlock(); break; default: --- LVM2/lib/locking/no_locking.c 2011/01/12 20:42:51 1.25 +++ LVM2/lib/locking/no_locking.c 2011/02/02 20:04:39 1.26 @@ -38,7 +38,9 @@ { switch (flags & LCK_SCOPE_MASK) { case LCK_VG: - if (!strcmp(resource, VG_SYNC_NAMES)) + if (!strcmp(resource, VG_SYNC_NAMES) || + (((flags & LCK_TYPE_MASK) == LCK_UNLOCK) && + is_real_vg(resource))) fs_unlock(); break; case LCK_LV: