You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
247 lines
7.5 KiB
247 lines
7.5 KiB
From a369a7fd1fccf3c50103dd294b79055cc7c9d005 Mon Sep 17 00:00:00 2001 |
|
From: David Teigland <teigland@redhat.com> |
|
Date: Tue, 5 Jul 2022 17:08:00 -0500 |
|
Subject: [PATCH 6/7] exit with error when --devicesfile name doesn't exist |
|
|
|
(cherry picked from commit 92b4fcf57f3c6d212d06b72b097e1a06e6efb84b) |
|
--- |
|
lib/cache/lvmcache.c | 3 ++- |
|
lib/label/label.c | 4 ++-- |
|
test/shell/devicesfile-basic.sh | 1 + |
|
tools/pvcreate.c | 3 ++- |
|
tools/pvremove.c | 3 ++- |
|
tools/pvscan.c | 3 ++- |
|
tools/toollib.c | 27 +++++++++++++++++++++------ |
|
tools/vgcfgrestore.c | 5 ++++- |
|
tools/vgcreate.c | 5 ++++- |
|
tools/vgextend.c | 3 ++- |
|
tools/vgmerge.c | 3 ++- |
|
tools/vgsplit.c | 3 ++- |
|
12 files changed, 46 insertions(+), 17 deletions(-) |
|
|
|
diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c |
|
index 22edcfd84..a1c4a61c8 100644 |
|
--- a/lib/cache/lvmcache.c |
|
+++ b/lib/cache/lvmcache.c |
|
@@ -1612,7 +1612,8 @@ int lvmcache_label_scan(struct cmd_context *cmd) |
|
* with infos/vginfos based on reading headers from |
|
* each device, and a vg summary from each mda. |
|
*/ |
|
- label_scan(cmd); |
|
+ if (!label_scan(cmd)) |
|
+ return_0; |
|
|
|
/* |
|
* When devnames are used as device ids (which is dispreferred), |
|
diff --git a/lib/label/label.c b/lib/label/label.c |
|
index 711edb6f4..f845abb96 100644 |
|
--- a/lib/label/label.c |
|
+++ b/lib/label/label.c |
|
@@ -801,7 +801,7 @@ static int _setup_bcache(void) |
|
} |
|
|
|
if (!(scan_bcache = bcache_create(BCACHE_BLOCK_SIZE_IN_SECTORS, cache_blocks, ioe))) { |
|
- log_error("Failed to create bcache with %d cache blocks.", cache_blocks); |
|
+ log_error("Failed to set up io layer with %d blocks.", cache_blocks); |
|
return 0; |
|
} |
|
|
|
@@ -1292,7 +1292,7 @@ int label_scan(struct cmd_context *cmd) |
|
* data to invalidate.) |
|
*/ |
|
if (!(iter = dev_iter_create(NULL, 0))) { |
|
- log_error("Scanning failed to get devices."); |
|
+ log_error("Failed to get device list."); |
|
return 0; |
|
} |
|
while ((dev = dev_iter_get(cmd, iter))) { |
|
diff --git a/test/shell/devicesfile-basic.sh b/test/shell/devicesfile-basic.sh |
|
index 77fe265a0..715c579b3 100644 |
|
--- a/test/shell/devicesfile-basic.sh |
|
+++ b/test/shell/devicesfile-basic.sh |
|
@@ -107,6 +107,7 @@ not vgs --devicesfile test.devices $vg2 |
|
# misspelled override name fails |
|
not vgs --devicesfile doesnotexist $vg1 |
|
not vgs --devicesfile doesnotexist $vg2 |
|
+not vgs --devicesfile doesnotexist |
|
|
|
# devicesfile and devices cannot be used together |
|
not vgs --devicesfile test.devices --devices "$dev1","$dev1" $vg1 |
|
diff --git a/tools/pvcreate.c b/tools/pvcreate.c |
|
index 71eb060a3..a1ef0e9e1 100644 |
|
--- a/tools/pvcreate.c |
|
+++ b/tools/pvcreate.c |
|
@@ -144,7 +144,8 @@ int pvcreate(struct cmd_context *cmd, int argc, char **argv) |
|
|
|
cmd->create_edit_devices_file = 1; |
|
|
|
- lvmcache_label_scan(cmd); |
|
+ if (!lvmcache_label_scan(cmd)) |
|
+ return_ECMD_FAILED; |
|
|
|
if (!(handle = init_processing_handle(cmd, NULL))) { |
|
log_error("Failed to initialize processing handle."); |
|
diff --git a/tools/pvremove.c b/tools/pvremove.c |
|
index 2dfdbd016..5c39ee0c7 100644 |
|
--- a/tools/pvremove.c |
|
+++ b/tools/pvremove.c |
|
@@ -45,7 +45,8 @@ int pvremove(struct cmd_context *cmd, int argc, char **argv) |
|
|
|
clear_hint_file(cmd); |
|
|
|
- lvmcache_label_scan(cmd); |
|
+ if (!lvmcache_label_scan(cmd)) |
|
+ return_ECMD_FAILED; |
|
|
|
/* When forcibly clearing a PV we don't care about a VG lock. */ |
|
if (pp.force == DONT_PROMPT_OVERRIDE) |
|
diff --git a/tools/pvscan.c b/tools/pvscan.c |
|
index 1e47d754a..72c3279c3 100644 |
|
--- a/tools/pvscan.c |
|
+++ b/tools/pvscan.c |
|
@@ -1407,7 +1407,8 @@ static int _pvscan_cache_all(struct cmd_context *cmd, int argc, char **argv, |
|
* which we want 'pvscan --cache' to do, and that uses |
|
* info from lvmcache, e.g. duplicate pv info. |
|
*/ |
|
- lvmcache_label_scan(cmd); |
|
+ if (!lvmcache_label_scan(cmd)) |
|
+ return_0; |
|
|
|
cmd->pvscan_recreate_hints = 0; |
|
cmd->use_hints = 0; |
|
diff --git a/tools/toollib.c b/tools/toollib.c |
|
index d77092d89..544791808 100644 |
|
--- a/tools/toollib.c |
|
+++ b/tools/toollib.c |
|
@@ -1655,7 +1655,10 @@ int process_each_label(struct cmd_context *cmd, int argc, char **argv, |
|
|
|
log_set_report_object_type(LOG_REPORT_OBJECT_TYPE_LABEL); |
|
|
|
- lvmcache_label_scan(cmd); |
|
+ if (!lvmcache_label_scan(cmd)) { |
|
+ ret_max = ECMD_FAILED; |
|
+ goto_out; |
|
+ } |
|
|
|
if (argc) { |
|
for (; opt < argc; opt++) { |
|
@@ -2435,8 +2438,13 @@ int process_each_vg(struct cmd_context *cmd, |
|
* Scan all devices to populate lvmcache with initial |
|
* list of PVs and VGs. |
|
*/ |
|
- if (!(read_flags & PROCESS_SKIP_SCAN)) |
|
- lvmcache_label_scan(cmd); |
|
+ if (!(read_flags & PROCESS_SKIP_SCAN)) { |
|
+ if (!lvmcache_label_scan(cmd)) { |
|
+ ret_max = ECMD_FAILED; |
|
+ goto_out; |
|
+ } |
|
+ } |
|
+ |
|
|
|
/* |
|
* A list of all VGs on the system is needed when: |
|
@@ -3987,7 +3995,10 @@ int process_each_lv(struct cmd_context *cmd, |
|
* Scan all devices to populate lvmcache with initial |
|
* list of PVs and VGs. |
|
*/ |
|
- lvmcache_label_scan(cmd); |
|
+ if (!lvmcache_label_scan(cmd)) { |
|
+ ret_max = ECMD_FAILED; |
|
+ goto_out; |
|
+ } |
|
|
|
/* |
|
* A list of all VGs on the system is needed when: |
|
@@ -4623,8 +4634,12 @@ int process_each_pv(struct cmd_context *cmd, |
|
goto_out; |
|
} |
|
|
|
- if (!(read_flags & PROCESS_SKIP_SCAN)) |
|
- lvmcache_label_scan(cmd); |
|
+ if (!(read_flags & PROCESS_SKIP_SCAN)) { |
|
+ if (!lvmcache_label_scan(cmd)) { |
|
+ ret_max = ECMD_FAILED; |
|
+ goto_out; |
|
+ } |
|
+ } |
|
|
|
if (!lvmcache_get_vgnameids(cmd, &all_vgnameids, only_this_vgname, 1)) { |
|
ret_max = ret; |
|
diff --git a/tools/vgcfgrestore.c b/tools/vgcfgrestore.c |
|
index e49313d14..9fcba89d4 100644 |
|
--- a/tools/vgcfgrestore.c |
|
+++ b/tools/vgcfgrestore.c |
|
@@ -132,7 +132,10 @@ int vgcfgrestore(struct cmd_context *cmd, int argc, char **argv) |
|
|
|
clear_hint_file(cmd); |
|
|
|
- lvmcache_label_scan(cmd); |
|
+ if (!lvmcache_label_scan(cmd)) { |
|
+ unlock_vg(cmd, NULL, vg_name); |
|
+ return_ECMD_FAILED; |
|
+ } |
|
|
|
cmd->handles_unknown_segments = 1; |
|
|
|
diff --git a/tools/vgcreate.c b/tools/vgcreate.c |
|
index dde3f1eac..14608777f 100644 |
|
--- a/tools/vgcreate.c |
|
+++ b/tools/vgcreate.c |
|
@@ -84,7 +84,10 @@ int vgcreate(struct cmd_context *cmd, int argc, char **argv) |
|
|
|
cmd->create_edit_devices_file = 1; |
|
|
|
- lvmcache_label_scan(cmd); |
|
+ if (!lvmcache_label_scan(cmd)) { |
|
+ unlock_vg(cmd, NULL, vp_new.vg_name); |
|
+ return_ECMD_FAILED; |
|
+ } |
|
|
|
if (lvmcache_vginfo_from_vgname(vp_new.vg_name, NULL)) { |
|
unlock_vg(cmd, NULL, vp_new.vg_name); |
|
diff --git a/tools/vgextend.c b/tools/vgextend.c |
|
index 0856b4c78..fecd6bdd5 100644 |
|
--- a/tools/vgextend.c |
|
+++ b/tools/vgextend.c |
|
@@ -160,7 +160,8 @@ int vgextend(struct cmd_context *cmd, int argc, char **argv) |
|
|
|
cmd->edit_devices_file = 1; |
|
|
|
- lvmcache_label_scan(cmd); |
|
+ if (!lvmcache_label_scan(cmd)) |
|
+ return_ECMD_FAILED; |
|
|
|
if (!(handle = init_processing_handle(cmd, NULL))) { |
|
log_error("Failed to initialize processing handle."); |
|
diff --git a/tools/vgmerge.c b/tools/vgmerge.c |
|
index 08615cd62..4ed4a8f0b 100644 |
|
--- a/tools/vgmerge.c |
|
+++ b/tools/vgmerge.c |
|
@@ -72,7 +72,8 @@ static int _vgmerge_single(struct cmd_context *cmd, const char *vg_name_to, |
|
return ECMD_FAILED; |
|
} |
|
|
|
- lvmcache_label_scan(cmd); |
|
+ if (!lvmcache_label_scan(cmd)) |
|
+ return_ECMD_FAILED; |
|
|
|
if (strcmp(vg_name_to, vg_name_from) > 0) |
|
lock_vg_from_first = 1; |
|
diff --git a/tools/vgsplit.c b/tools/vgsplit.c |
|
index 5f113b363..c7f4b8af4 100644 |
|
--- a/tools/vgsplit.c |
|
+++ b/tools/vgsplit.c |
|
@@ -559,7 +559,8 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv) |
|
return ECMD_FAILED; |
|
} |
|
|
|
- lvmcache_label_scan(cmd); |
|
+ if (!lvmcache_label_scan(cmd)) |
|
+ return_ECMD_FAILED; |
|
|
|
if (!(vginfo_to = lvmcache_vginfo_from_vgname(vg_name_to, NULL))) { |
|
if (!validate_name(vg_name_to)) { |
|
-- |
|
2.34.3 |
|
|
|
|