r922 - in lvm2/trunk/debian: . patches

Bastian Blank waldi at alioth.debian.org
Mon Nov 19 11:11:02 UTC 2012


Author: waldi
Date: Mon Nov 19 11:11:01 2012
New Revision: 922

Log:
* debian/changelog: Update.
* debian/patches: Properly ignore missing dmeventd.

Added:
   lvm2/trunk/debian/patches/missing-dmeventd.patch
Modified:
   lvm2/trunk/debian/changelog
   lvm2/trunk/debian/patches/series

Modified: lvm2/trunk/debian/changelog
==============================================================================
--- lvm2/trunk/debian/changelog	Mon Nov 19 09:59:04 2012	(r921)
+++ lvm2/trunk/debian/changelog	Mon Nov 19 11:11:01 2012	(r922)
@@ -1,6 +1,7 @@
 lvm2 (2.02.95-5) UNRELEASED; urgency=low
 
   * Don't discard pv areas on pvmove commands. (closes: #691271)
+  * Properly ignore missing dmeventd.
 
  -- Bastian Blank <waldi at debian.org>  Wed, 14 Nov 2012 11:07:20 +0100
 

Added: lvm2/trunk/debian/patches/missing-dmeventd.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ lvm2/trunk/debian/patches/missing-dmeventd.patch	Mon Nov 19 11:11:01 2012	(r922)
@@ -0,0 +1,114 @@
+Description: Ignore missing dmeventd
+Author: Bastian Blank <waldi at debian.org>
+
+--- a/daemons/dmeventd/libdevmapper-event.c
++++ b/daemons/dmeventd/libdevmapper-event.c
+@@ -441,7 +441,10 @@
+ 	/* server is not running */
+ 
+ 	if (!strncmp(DMEVENTD_PATH, "/", 1) && stat(DMEVENTD_PATH, &statbuf)) {
+-		log_sys_error("stat", DMEVENTD_PATH);
++		if (errno != ENOENT)
++			log_error("Unable to find " DMEVENTD_PATH ": %s", strerror(errno));
++		else
++			log_sys_debug("stat", DMEVENTD_PATH);
+ 		return 0;
+ 	}
+ 
+@@ -627,10 +630,19 @@
+ 
+ 	if ((err = _do_event(DM_EVENT_CMD_REGISTER_FOR_EVENT, dmevh->dmeventd_path, &msg,
+ 			     dmevh->dso, uuid, dmevh->mask, dmevh->timeout)) < 0) {
+-		log_error("%s: event registration failed: %s",
+-			  dm_task_get_name(dmt),
+-			  msg.data ? msg.data : strerror(-err));
+-		ret = 0;
++		if (err != -ESRCH) {
++			log_error("%s: event registration failed: %s",
++				  dm_task_get_name(dmt),
++				  msg.data ? msg.data : strerror(-err));
++			ret = 0;
++		}
++		else {
++			/* XXX: Ignore missing daemon */
++			log_debug("%s: event registration failed, ignored: %s",
++				  dm_task_get_name(dmt),
++				  msg.data ? msg.data : strerror(-err));
++			ret = 2;
++		}
+ 	}
+ 
+ 	dm_free(msg.data);
+--- a/lib/activate/activate.c
++++ b/lib/activate/activate.c
+@@ -1197,10 +1197,12 @@
+ 
+ 	if (!r)
+ 		return_0;
++	else if (r == 2)
++		log_info("No monitoring daemon available for %s", uuid);
++	else if (r == 1)
++		log_info("%s %s for events", set ? "Monitored" : "Unmonitored", uuid);
+ 
+-	log_info("%s %s for events", set ? "Monitored" : "Unmonitored", uuid);
+-
+-	return 1;
++	return r;
+ }
+ 
+ #endif
+@@ -1214,7 +1216,7 @@
+ {
+ #ifdef DMEVENTD
+ 	int i, pending = 0, monitored;
+-	int r = 1;
++	int r = 1, err;
+ 	struct dm_list *tmp, *snh, *snht;
+ 	struct lv_segment *seg;
+ 	struct lv_segment *log_seg;
+@@ -1319,25 +1321,30 @@
+ 			continue;
+ 
+ 		/* FIXME specify events */
+-		if (!monitor_fn(seg, 0)) {
++		err = monitor_fn(seg, 0);
++		if (!err) {
+ 			log_error("%s/%s: %s segment monitoring function failed.",
+ 				  lv->vg->name, lv->name, seg->segtype->name);
+ 			return 0;
+ 		}
+-
+-		/* Check [un]monitor results */
+-		/* Try a couple times if pending, but not forever... */
+-		for (i = 0; i < 10; i++) {
+-			pending = 0;
+-			monitored = seg->segtype->ops->target_monitored(seg, &pending);
+-			if (pending ||
+-			    (!monitored && monitor) ||
+-			    (monitored && !monitor))
+-				log_very_verbose("%s/%s %smonitoring still pending: waiting...",
+-						 lv->vg->name, lv->name, monitor ? "" : "un");
+-			else
+-				break;
+-			sleep(1);
++		/* XXX: Ignore monitoring events if no daemon is available. */
++		else if (err == 2)
++			monitored = monitor = 0;
++		else {
++			/* Check [un]monitor results */
++			/* Try a couple times if pending, but not forever... */
++			for (i = 0; i < 10; i++) {
++				pending = 0;
++				monitored = seg->segtype->ops->target_monitored(seg, &pending);
++				if (pending ||
++				    (!monitored && monitor) ||
++				    (monitored && !monitor))
++					log_very_verbose("%s/%s %smonitoring still pending: waiting...",
++							 lv->vg->name, lv->name, monitor ? "" : "un");
++				else
++					break;
++				sleep(1);
++			}
+ 		}
+ 
+ 		if (r)

Modified: lvm2/trunk/debian/patches/series
==============================================================================
--- lvm2/trunk/debian/patches/series	Mon Nov 19 09:59:04 2012	(r921)
+++ lvm2/trunk/debian/patches/series	Mon Nov 19 11:11:01 2012	(r922)
@@ -9,3 +9,4 @@
 upstream-fix-discard-1.patch
 upstream-fix-discard-2.patch
 upstream-fix-discard-3.patch
+missing-dmeventd.patch



More information about the pkg-lvm-commits mailing list