summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2016-01-26 10:37:18 -0600
committerDavid Teigland <teigland@redhat.com>2016-01-26 10:38:19 -0600
commit2bc08d2c4348ece3c8fc83c5dcf2ba7ec646806d (patch)
tree6c4b2bf8fe64192205f7766ea4894b54347d6076
parenta43cddb450e3f7ce6d9f60053d0d3c119a733e49 (diff)
downloadlvm2-dev-dct-notify7.tar.gz
dmeventd: use normal dbus send apidev-dct-notify7
the async didn't work as expected
-rw-r--r--daemons/dmeventd/dmeventd.c36
-rw-r--r--daemons/dmeventd/dmeventd.h2
-rw-r--r--daemons/dmeventd/plugins/raid/dmeventd_raid.c2
3 files changed, 23 insertions, 17 deletions
diff --git a/daemons/dmeventd/dmeventd.c b/daemons/dmeventd/dmeventd.c
index 2f16b8594..3e068028c 100644
--- a/daemons/dmeventd/dmeventd.c
+++ b/daemons/dmeventd/dmeventd.c
@@ -2287,17 +2287,13 @@ int main(int argc, char *argv[])
#ifdef NOTIFYDBUS_SUPPORT
#include <systemd/sd-bus.h>
-static void *dbus_callback_data;
-
-static int dbus_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error)
-{
- return 0;
-}
-
-void lvmnotify_send_noreply(const char *name)
+void lvmnotify_send(const char *name)
{
sd_bus *bus = NULL;
+ sd_bus_message *m = NULL;
+ sd_bus_error error = SD_BUS_ERROR_NULL;
int ret;
+ int result = 0;
ret = sd_bus_open_system(&bus);
if (ret < 0) {
@@ -2305,25 +2301,35 @@ void lvmnotify_send_noreply(const char *name)
return;
}
- ret = sd_bus_call_method_async(bus, NULL,
- "com.redhat.lvmdbus1.Manager",
+ ret = sd_bus_call_method(bus,
+ "com.redhat.lvmdbus1",
"/com/redhat/lvmdbus1/Manager",
"com.redhat.lvmdbus1.Manager",
"ExternalEvent",
- dbus_callback,
- dbus_callback_data,
+ &error,
+ &m,
"s",
name);
- if (ret < 0)
- log_debug("Failed to issue dbus method call: %d", ret);
+ if (ret < 0) {
+ log_debug("Failed to issue dbus method call: %s", error.message);
+ goto out;
+ }
+ ret = sd_bus_message_read(m, "i", &result);
+ if (ret < 0)
+ log_debug("Failed to parse dbus response message: %d", ret);
+ if (result)
+ log_debug("Bad return value from dbus service: %d", result);
+out:
+ sd_bus_error_free(&error);
+ sd_bus_message_unref(m);
sd_bus_unref(bus);
}
#else
-void lvmnotify_send_noreply(const char *name)
+void lvmnotify_send(const char *name)
{
}
diff --git a/daemons/dmeventd/dmeventd.h b/daemons/dmeventd/dmeventd.h
index ed314b1a4..0e6469dba 100644
--- a/daemons/dmeventd/dmeventd.h
+++ b/daemons/dmeventd/dmeventd.h
@@ -73,6 +73,6 @@ int init_fifos(struct dm_event_fifos *fifos);
void fini_fifos(struct dm_event_fifos *fifos);
int dm_event_get_version(struct dm_event_fifos *fifos, int *version);
-void lvmnotify_send_noreply(const char *name);
+void lvmnotify_send(const char *name);
#endif /* __DMEVENTD_DOT_H__ */
diff --git a/daemons/dmeventd/plugins/raid/dmeventd_raid.c b/daemons/dmeventd/plugins/raid/dmeventd_raid.c
index fc65e23a0..4c20043b8 100644
--- a/daemons/dmeventd/plugins/raid/dmeventd_raid.c
+++ b/daemons/dmeventd/plugins/raid/dmeventd_raid.c
@@ -97,7 +97,7 @@ void process_event(struct dm_task *dmt,
device);
} while (next);
- lvmnotify_send_noreply("dmeventd_raid");
+ lvmnotify_send("dmeventd_raid");
}
int register_device(const char *device,