diff options
author | David Teigland <teigland@redhat.com> | 2016-01-26 10:37:18 -0600 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2016-01-26 10:38:19 -0600 |
commit | 2bc08d2c4348ece3c8fc83c5dcf2ba7ec646806d (patch) | |
tree | 6c4b2bf8fe64192205f7766ea4894b54347d6076 | |
parent | a43cddb450e3f7ce6d9f60053d0d3c119a733e49 (diff) | |
download | lvm2-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.c | 36 | ||||
-rw-r--r-- | daemons/dmeventd/dmeventd.h | 2 | ||||
-rw-r--r-- | daemons/dmeventd/plugins/raid/dmeventd_raid.c | 2 |
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, |