From: Christine Caulfield Date: Wed, 5 Aug 2009 14:18:35 +0000 (+0000) Subject: Fix locking in clvmd X-Git-Tag: old-v2_02_51~10 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=cecc0e9dc8ae099d3de4434e2261406c94fc4688;p=lvm2.git Fix locking in clvmd The changes to remove LCK_NONBLOCK from the LVM locks broke clvmd because the code was clearly wrong but working anyway! The constant was being masked rather than the variable that was supposed to match against it. --- diff --git a/WHATS_NEW b/WHATS_NEW index faf658c8f..ea4899d6e 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.51 - ================================ + Fix locking in clvmd (2.02.50). Add --noudevsync option for relevant LVM tools. Add activation/udev_sync to lvm.conf. Only change LV symlinks on ACTIVATE not PRELOAD. diff --git a/daemons/clvmd/lvm-functions.c b/daemons/clvmd/lvm-functions.c index eb9ad6fb3..23d740c91 100644 --- a/daemons/clvmd/lvm-functions.c +++ b/daemons/clvmd/lvm-functions.c @@ -479,29 +479,29 @@ int do_lock_lv(unsigned char command, unsigned char lock_flags, char *resource) cmd->partial_activation = (lock_flags & LCK_PARTIAL_MODE) ? 1 : 0; - switch (command) { - case LCK_LV_EXCLUSIVE & LCK_MASK: + switch (command & LCK_MASK) { + case LCK_LV_EXCLUSIVE: status = do_activate_lv(resource, lock_flags, LKM_EXMODE); break; - case LCK_LV_SUSPEND & LCK_MASK: + case LCK_LV_SUSPEND: status = do_suspend_lv(resource); if (!status) suspended++; break; case LCK_UNLOCK: - case LCK_LV_RESUME & LCK_MASK: /* if active */ + case LCK_LV_RESUME: /* if active */ status = do_resume_lv(resource); if (!status) suspended--; break; - case LCK_LV_ACTIVATE & LCK_MASK: + case LCK_LV_ACTIVATE: status = do_activate_lv(resource, lock_flags, LKM_CRMODE); break; - case LCK_LV_DEACTIVATE & LCK_MASK: + case LCK_LV_DEACTIVATE: status = do_deactivate_lv(resource, lock_flags); break;