From: Sidnei da Silva Date: Mon, 21 Oct 2013 22:16:32 +0000 (-0200) Subject: Fallback lvs comparison to false. X-Git-Tag: lxc-1.0.0.alpha3~81 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8aba14bbc8e7ab5466676fea88d4a0621053358d;p=thirdparty%2Flxc.git Fallback lvs comparison to false. If lvs invocation fails or doesn't return any output, then lv flags comparison to false. Signed-off-by: Sidnei da Silva Signed-off-by: Serge Hallyn --- diff --git a/src/lxc/bdev.c b/src/lxc/bdev.c index 671a0b691..62d3803a1 100644 --- a/src/lxc/bdev.c +++ b/src/lxc/bdev.c @@ -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++;