summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2015-12-07 12:10:12 -0600
committerDavid Teigland <teigland@redhat.com>2015-12-07 13:07:42 -0600
commit82d38c97e8b4c9ef084a83d515266322b4af6201 (patch)
tree16a0239cf9ecb654a382974b3c82e7c6522c6760
parent20798b209703342c943567fa5c317a852d12add9 (diff)
downloadlvm2-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.c46
-rw-r--r--daemons/dmeventd/dmeventd.h2
-rw-r--r--daemons/dmeventd/plugins/raid/dmeventd_raid.c2
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,