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