All of lore.kernel.org
 help / color / mirror / Atom feed
From: mbroz@sourceware.org <mbroz@sourceware.org>
To: lvm-devel@redhat.com
Subject: LVM2 ./WHATS_NEW daemons/clvmd/refresh_clvmd.c
Date: 21 Jun 2010 10:45:18 -0000	[thread overview]
Message-ID: <20100621104518.21153.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	mbroz at sourceware.org	2010-06-21 10:45:17

Modified files:
	.              : WHATS_NEW 
	daemons/clvmd  : refresh_clvmd.c 

Log message:
	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).

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1620&r2=1.1621
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/daemons/clvmd/refresh_clvmd.c.diff?cvsroot=lvm2&r1=1.10&r2=1.11

--- LVM2/WHATS_NEW	2010/06/21 08:54:32	1.1620
+++ LVM2/WHATS_NEW	2010/06/21 10:45:15	1.1621
@@ -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.
--- LVM2/daemons/clvmd/refresh_clvmd.c	2010/06/15 11:00:45	1.10
+++ LVM2/daemons/clvmd/refresh_clvmd.c	2010/06/21 10:45:16	1.11
@@ -327,8 +327,21 @@
 
 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)



             reply	other threads:[~2010-06-21 10:45 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-21 10:45 mbroz [this message]
  -- strict thread matches above, loose matches on Subject: below --
2011-09-21 13:40 LVM2 ./WHATS_NEW daemons/clvmd/refresh_clvmd.c mbroz
2010-07-01 21:46 mbroz
2010-06-07 13:52 mbroz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100621104518.21153.qmail@sourceware.org \
    --to=mbroz@sourceware.org \
    --cc=lvm-devel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.