]> sourceware.org Git - lvm2.git/commitdiff
dmeventd_thin: handling of internal command
authorZdenek Kabelac <zkabelac@redhat.com>
Wed, 18 Jan 2017 08:56:15 +0000 (09:56 +0100)
committerZdenek Kabelac <zkabelac@redhat.com>
Fri, 20 Jan 2017 22:55:50 +0000 (23:55 +0100)
daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c

index 0cca98f8effd7a21aa8eb1c571d5a53a3f980e30..930f9fc8fd837c7854cd2fb91c370495dd1c9bbc 100644 (file)
@@ -121,6 +121,7 @@ int dmeventd_lvm2_run(const char *cmdline)
 int dmeventd_lvm2_command(struct dm_pool *mem, char *buffer, size_t size,
                          const char *cmd, const char *device)
 {
+       static char _internal_prefix[] =  "_dmeventd_";
        char *vg = NULL, *lv = NULL, *layer;
        int r;
 
@@ -135,6 +136,21 @@ int dmeventd_lvm2_command(struct dm_pool *mem, char *buffer, size_t size,
            (layer = strstr(lv, "_mlog")))
                *layer = '\0';
 
+       if (!strncmp(cmd, _internal_prefix, sizeof(_internal_prefix) - 1)) {
+               dmeventd_lvm2_lock();
+               /* output of internal command passed via env var */
+               if (!dmeventd_lvm2_run(cmd))
+                       cmd = NULL;
+               else if ((cmd = getenv(cmd)))
+                       cmd = dm_pool_strdup(mem, cmd); /* copy with lock */
+               dmeventd_lvm2_unlock();
+
+               if (!cmd) {
+                       log_error("Unable to find configured command.");
+                       return 0;
+               }
+       }
+
        r = dm_snprintf(buffer, size, "%s %s/%s", cmd, vg, lv);
 
        dm_pool_free(mem, vg);
This page took 0.037392 seconds and 5 git commands to generate.