summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2020-01-22 12:57:23 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2020-01-23 10:32:15 +0100
commitcf844941d4f0939a78a9e0d0e0ef932172e55bfb (patch)
treeb31d061bd17a48db3cbd390d16e4189bbfac471c
parentd7bf7091c35d3d34aae0d118fa4b78cd30cd4778 (diff)
downloadlvm2-cf844941d4f0939a78a9e0d0e0ef932172e55bfb.tar.gz
vdo: adapt for multi line vdo_format output
Do not close pipeline after 1st. line parsed from vdo_format. Also reprint the output for a user so new messages from vdo_format can be seen by users.
-rw-r--r--lib/metadata/vdo_manip.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/metadata/vdo_manip.c b/lib/metadata/vdo_manip.c
index 26694cc9a..b690e73d8 100644
--- a/lib/metadata/vdo_manip.c
+++ b/lib/metadata/vdo_manip.c
@@ -317,15 +317,17 @@ static int _format_vdo_pool_data_lv(struct logical_volume *data_lv,
}
if (!*logical_size)
- while (fgets(buf, sizeof(buf), f)) {
+ while (!feof(f) && fgets(buf, sizeof(buf), f)) {
/* TODO: Watch out for locales */
if (sscanf(buf, "Logical blocks defaulted to " FMTu64 " blocks", &lb) == 1) {
*logical_size = lb * DM_VDO_BLOCK_SIZE;
log_verbose("Available VDO logical blocks " FMTu64 " (%s).",
lb, display_size(data_lv->vg->cmd, *logical_size));
- break;
- } else
- log_warn("WARNING: Cannot parse output '%s' from %s.", buf, argv[0]);
+ }
+ if ((dpath = strchr(buf, '\n')))
+ *dpath = 0; /* cut last '\n' away */
+ if (buf[0])
+ log_print(" %s", buf); /* Print vdo_format messages */
}
if (!pipe_close(&pdata)) {
@@ -333,6 +335,11 @@ static int _format_vdo_pool_data_lv(struct logical_volume *data_lv,
return 0;
}
+ if (!*logical_size) {
+ log_error("Number of VDO logical blocks was not provided by vdo_format output.");
+ return 0;
+ }
+
return 1;
}