diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2011-12-22 15:55:21 +0000 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2011-12-22 15:55:21 +0000 |
commit | 8527b9273869c08e631f82164f7ac28fc5b67b7a (patch) | |
tree | fff7d3e23974f28b15a1865b8e8fb74eaac38397 /daemons | |
parent | 59e1bb62de24a91cb81676a345165cc46a86e6bb (diff) | |
download | lvm2-8527b9273869c08e631f82164f7ac28fc5b67b7a.tar.gz lvm2-8527b9273869c08e631f82164f7ac28fc5b67b7a.tar.xz lvm2-8527b9273869c08e631f82164f7ac28fc5b67b7a.zip |
Add helper function dmeventd_lvm2_command().
Since this code is in all plugins - create a common helper function.
Diffstat (limited to 'daemons')
-rw-r--r-- | daemons/dmeventd/plugins/lvm2/.exported_symbols | 1 | ||||
-rw-r--r-- | daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c | 23 | ||||
-rw-r--r-- | daemons/dmeventd/plugins/lvm2/dmeventd_lvm.h | 3 |
3 files changed, 27 insertions, 0 deletions
diff --git a/daemons/dmeventd/plugins/lvm2/.exported_symbols b/daemons/dmeventd/plugins/lvm2/.exported_symbols index ebe3d057..646e4cf3 100644 --- a/daemons/dmeventd/plugins/lvm2/.exported_symbols +++ b/daemons/dmeventd/plugins/lvm2/.exported_symbols @@ -4,3 +4,4 @@ dmeventd_lvm2_lock dmeventd_lvm2_unlock dmeventd_lvm2_pool dmeventd_lvm2_run +dmeventd_lvm2_command 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; +} diff --git a/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.h b/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.h index 8efcb9b6..1960c719 100644 --- a/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.h +++ b/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.h @@ -36,4 +36,7 @@ void dmeventd_lvm2_unlock(void); struct dm_pool *dmeventd_lvm2_pool(void); +int dmeventd_lvm2_command(struct dm_pool *mem, char *buffer, size_t size, + const char *cmd, const char *device); + #endif /* _DMEVENTD_LVMWRAP_H */ |