summaryrefslogtreecommitdiffstats
path: root/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c
diff options
context:
space:
mode:
Diffstat (limited to 'daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c')
-rw-r--r--daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c b/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c
index 789c68a3..32a387ff 100644
--- a/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c
+++ b/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c
@@ -151,3 +151,26 @@ int dmeventd_lvm2_run(const char *cmdline)
return lvm2_run(_lvm_handle, cmdline);
}
+int dmeventd_lvm2_command(struct dm_pool *mem, char *buffer, size_t size,
+ const char *cmd, const char *device)
+{
+ char *vg = NULL, *lv = NULL, *layer;
+ int r;
+
+ if (!dm_split_lvm_name(mem, device, &vg, &lv, &layer)) {
+ syslog(LOG_ERR, "Unable to determine VG name from %s.\n",
+ device);
+ return 0;
+ }
+
+ r = dm_snprintf(buffer, size, "%s %s/%s", cmd, vg, lv);
+
+ dm_pool_free(mem, vg);
+
+ if (r < 0) {
+ syslog(LOG_ERR, "Unable to form LVM command. (too long).\n");
+ return 0;
+ }
+
+ return 1;
+}