]> sourceware.org Git - lvm2.git/commitdiff
Let running clvmd process time to reexec.
authorMilan Broz <mbroz@redhat.com>
Mon, 21 Jun 2010 10:45:15 +0000 (10:45 +0000)
committerMilan Broz <mbroz@redhat.com>
Mon, 21 Jun 2010 10:45:15 +0000 (10:45 +0000)
Because execve stops the command loop,
we never receive response (only socket close) for clvmd -S,
so waiting for response here makes no sense.

But if the calling process (clvmd -S)  exits too early, connection
is closed from client side, clvmd takes this as an error and
never run restart code.

Ugly hack(TM).

WHATS_NEW
daemons/clvmd/refresh_clvmd.c

index 716e8b82b55498bd25ee4aa828c7581be747e915..0e96f606f9cfb41c14740508e84488af58ee76e3 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.68 -
 ===============================
+  Add workaround for clvmd -S (socket closed too early and server drops the command).
   Use early udev synchronisation and update of dev nodes for clustered mirrors.
   Unneeded kdev_t.h reference causing harm for cmirrord on some archs.
   Add man pages for lvmconf and unsupported lvmsadc and lvmsar tools.
index 24d29fbe5f47c40029685255d99ecc0f6f19458c..c1c3aa6f75026f556b2be9f8e1318bc6bc84871a 100644 (file)
@@ -327,8 +327,21 @@ int refresh_clvmd(int all_nodes)
 
 int restart_clvmd(int all_nodes)
 {
-       int dummy;
-       return _cluster_request(CLVMD_CMD_RESTART, all_nodes?"*":".", NULL, 0, NULL, &dummy, 1);
+       int dummy, status;
+
+       status = _cluster_request(CLVMD_CMD_RESTART, all_nodes?"*":".", NULL, 0, NULL, &dummy, 1);
+
+       /*
+        * FIXME: we cannot receive response, clvmd re-exec before it.
+        *        but also should not close socket too early (the whole rq is dropped then).
+        * FIXME: This should be handled this way:
+        *  - client waits for RESTART ack (and socket close)
+        *  - server restarts
+        *  - client checks that server is ready again (VERSION command?)
+        */
+       usleep(500000);
+
+       return status;
 }
 
 int debug_clvmd(int level, int clusterwide)
This page took 0.243805 seconds and 5 git commands to generate.