]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
Fallback lvs comparison to false.
authorSidnei da Silva <sidnei.da.silva@canonical.com>
Mon, 21 Oct 2013 22:16:32 +0000 (20:16 -0200)
committerSerge Hallyn <serge.hallyn@ubuntu.com>
Mon, 21 Oct 2013 22:35:33 +0000 (17:35 -0500)
If lvs invocation fails or doesn't return any output, then lv flags comparison to false.

Signed-off-by: Sidnei da Silva <sidnei.da.silva@canonical.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
src/lxc/bdev.c

index 671a0b6914dac9dcfd0d90c8be766413f978a43f..62d3803a1c0c0544808379b86277bb0ecf5e678b 100644 (file)
@@ -813,7 +813,7 @@ static int lvm_umount(struct bdev *bdev)
 
 static int lvm_compare_lv_attr(const char *path, int pos, const char expected) {
        FILE *f;
-       int ret, len, start=0;
+       int ret, len, status, start=0;
        char *cmd, output[12];
        const char *lvscmd = "lvs --unbuffered --noheadings -o lv_attr %s 2>/dev/null";
 
@@ -833,21 +833,16 @@ static int lvm_compare_lv_attr(const char *path, int pos, const char expected) {
                return -1;
        }
 
-       if (fgets(output, 12, f) == NULL) {
-               process_lock();
-               (void) pclose(f);
-               process_unlock();
-               return -1;
-       }
+       ret = fgets(output, 12, f) == NULL;
 
        process_lock();
-       ret = pclose(f);
+       status = pclose(f);
        process_unlock();
 
-       if (!WIFEXITED(ret)) {
-               SYSERROR("error executing lvs");
-               return -1;
-       }
+       if (ret || WEXITSTATUS(status))
+               // Assume either vg or lvs do not exist, default
+               // comparison to false.
+               return 0;
 
        len = strlen(output);
        while(start < len && output[start] == ' ') start++;