Skip to content

Commit

Permalink
Fallback lvs comparison to false.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Sidnei da Silva authored and hallyn committed Oct 21, 2013
1 parent 34e135b commit 8aba14b
Showing 1 changed file with 7 additions and 12 deletions.
19 changes: 7 additions & 12 deletions src/lxc/bdev.c
Expand Up @@ -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";

Expand All @@ -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++;
Expand Down

0 comments on commit 8aba14b

Please sign in to comment.