From 105f82c35ac34311f579b11520edd9eb19601a2e Mon Sep 17 00:00:00 2001 From: Jacek Konieczny Date: Wed, 12 Dec 2012 12:15:54 +0100 Subject: [PATCH] lvm2-clvmd_cmd_timeout.patch patch added Fixes lvm tools lock-up during temporary cluster problems --- lvm2-clvmd_cmd_timeout.patch | 32 ++++++++++++++++++++++++++++++++ lvm2.spec | 2 ++ 2 files changed, 34 insertions(+) create mode 100644 lvm2-clvmd_cmd_timeout.patch diff --git a/lvm2-clvmd_cmd_timeout.patch b/lvm2-clvmd_cmd_timeout.patch new file mode 100644 index 0000000..ba2b6f8 --- /dev/null +++ b/lvm2-clvmd_cmd_timeout.patch @@ -0,0 +1,32 @@ +commit 8b6c9bb794361c75b0aa96bede8a3f71d1dd663e +Author: Jacek Konieczny +Date: Wed Dec 12 11:59:42 2012 +0100 + + clvmd: command timeout handling fix + + clvmd would wait for select() to time-out before processing command + time-outs. The select timeout would be set to the cmd_timeout ('-t' + command-line option) value, which is 60 seconds by default. + + Normally the select() call is woken up more frequently, so the command + time-outs are never processed. This causes LVM tools wait forever on + cluster locking for operations started during temporary cluster + problems. + + Signed-off-by: Jacek Konieczny + +diff --git a/daemons/clvmd/clvmd.c b/daemons/clvmd/clvmd.c +index eb0bffd..2b5d753 100644 +--- a/daemons/clvmd/clvmd.c ++++ b/daemons/clvmd/clvmd.c +@@ -939,8 +939,8 @@ static void main_loop(int local_sock, int cmd_timeout) + } + } + +- /* Select timed out. Check for clients that have been waiting too long for a response */ +- if (select_status == 0) { ++ /* Check for clients that have been waiting too long for a response */ ++ if (select_status >= 0) { + time_t the_time = time(NULL); + + for (thisfd = &local_client_head; thisfd != NULL; diff --git a/lvm2.spec b/lvm2.spec index a1b0e8e..f5b3c04 100644 --- a/lvm2.spec +++ b/lvm2.spec @@ -51,6 +51,7 @@ Patch4: dl-dlsym.patch Patch5: %{name}-wrapper.patch Patch6: %{name}-lvm_path.patch Patch7: %{name}-sd_notify.patch +Patch8: %{name}-clvmd_cmd_timeout.patch URL: http://sources.redhat.com/lvm2/ BuildRequires: autoconf >= 2.61 BuildRequires: automake @@ -263,6 +264,7 @@ potrzeby initrd. %patch5 -p1 %patch6 -p1 %patch7 -p1 +%patch8 -p1 # do not force --export-symbol linker option for e.g. statically linked executables # -rdynamic compiler option drives linker in the right way. -- 2.44.0