From bd86888d7406cdb8ba20ff3d3b807fabcc7ba0db Mon Sep 17 00:00:00 2001 From: Alasdair Kergon Date: Fri, 21 Oct 2011 15:49:45 +0000 Subject: [PATCH] Pass exclusive LV locks to all nodes in the cluster. This was the intended behaviour, as described in the lvchange man page, so you have complete control through volume_list in lvm.conf, but the code seems to have been treating -ae as local-only for a very long time. --- WHATS_NEW | 3 ++- lib/locking/cluster_locking.c | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index 3c4e45ff6..3e633bc79 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.89 - ================================== + Pass exclusive LV locks to all nodes in the cluster. Improve lvcreate man documentation of the chunksize option. Improve man page style for lvcreate. Avoid recursive calls to dmeventd in its LVM plugins. @@ -19,7 +20,7 @@ Version 2.02.89 - Fix splitmirror in cluster having different DM/LVM views of storage. Fix improper udev settings during suspend/resume for mirror sub-LVs. Fix vgsplit when there are mirrors that have mirrored logs. - Clarify multi-name device filter pattern matching explanation in lvm.conf.5. + Clarify multi-name device filter pattern matching explanation in lvm.conf. Introduce lv_send_message and dev_manager_send_message. Introduce revert_lv for better pvmove cleanup. Replace incomplete pvmove activation failure recovery code with a message. diff --git a/lib/locking/cluster_locking.c b/lib/locking/cluster_locking.c index bd5fe4399..58e80af14 100644 --- a/lib/locking/cluster_locking.c +++ b/lib/locking/cluster_locking.c @@ -366,7 +366,6 @@ static int _lock_for_cluster(struct cmd_context *cmd, unsigned char clvmd_cmd, } else if (clvmd_cmd != CLVMD_CMD_VG_BACKUP) { if (strncmp(name, "P_", 2) && (clvmd_cmd == CLVMD_CMD_LOCK_VG || - (flags & LCK_TYPE_MASK) == LCK_EXCL || (flags & LCK_LOCAL) || !(flags & LCK_CLUSTER_VG))) node = ".";