mirror of
git://sourceware.org/git/lvm2.git
synced 2025-02-24 17:57:48 +03:00
Let running clvmd process time to reexec.
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).
This commit is contained in:
parent
566515c095
commit
aec39dcc34
@ -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.
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user