diff options
author | David Teigland <teigland@redhat.com> | 2015-12-07 12:10:12 -0600 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2015-12-07 13:07:42 -0600 |
commit | 82d38c97e8b4c9ef084a83d515266322b4af6201 (patch) | |
tree | 16a0239cf9ecb654a382974b3c82e7c6522c6760 | |
parent | 20798b209703342c943567fa5c317a852d12add9 (diff) | |
download | lvm2-dev-dct-notify3.tar.gz |
Add dbus notify functions for dmeventddev-dct-notify3
Initially only call this for raid events.
-rw-r--r-- | daemons/dmeventd/dmeventd.c | 46 | ||||
-rw-r--r-- | daemons/dmeventd/dmeventd.h | 2 | ||||
-rw-r--r-- | daemons/dmeventd/plugins/raid/dmeventd_raid.c | 2 |
3 files changed, 50 insertions, 0 deletions
diff --git a/daemons/dmeventd/dmeventd.c b/daemons/dmeventd/dmeventd.c index 56c504abe..c0bc6d2b5 100644 --- a/daemons/dmeventd/dmeventd.c +++ b/daemons/dmeventd/dmeventd.c @@ -2205,3 +2205,49 @@ int main(int argc, char *argv[]) exit(EXIT_SUCCESS); } + +#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) +{ + sd_bus *bus = NULL; + int ret; + + ret = sd_bus_open_system(&bus); + if (ret < 0) { + log_debug("Failed to connect to dbus: %d", ret); + return; + } + + ret = sd_bus_call_method_async(bus, NULL, + "com.redhat.lvmdbus1.Manager", + "/com/redhat/lvmdbus1/Manager", + "com.redhat.lvmdbus1.Manager", + "ExternalEvent", + dbus_callback, + dbus_callback_data, + "s", + name); + + if (ret < 0) + log_debug("Failed to issue dbus method call: %d", ret); + + sd_bus_unref(bus); +} + +#else + +void lvmnotify_send_noreply(const char *name) +{ +} + +#endif + diff --git a/daemons/dmeventd/dmeventd.h b/daemons/dmeventd/dmeventd.h index 25a4bbbb8..a8fd9e4ca 100644 --- a/daemons/dmeventd/dmeventd.h +++ b/daemons/dmeventd/dmeventd.h @@ -73,4 +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); + #endif /* __DMEVENTD_DOT_H__ */ diff --git a/daemons/dmeventd/plugins/raid/dmeventd_raid.c b/daemons/dmeventd/plugins/raid/dmeventd_raid.c index f00ffa4ce..552a2c1d2 100644 --- a/daemons/dmeventd/plugins/raid/dmeventd_raid.c +++ b/daemons/dmeventd/plugins/raid/dmeventd_raid.c @@ -93,6 +93,8 @@ void process_event(struct dm_task *dmt, log_error("Failed to process event for %s.", device); } while (next); + + lvmnotify_send_noreply("dmeventd_raid"); } int register_device(const char *device, |