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.
55 lines
1.9 KiB
55 lines
1.9 KiB
From 9a79248fe21554e6cb99dd6ed044e7cbff18f777 Mon Sep 17 00:00:00 2001 |
|
From: David Teigland <teigland@redhat.com> |
|
Date: Fri, 27 May 2022 14:27:03 -0500 |
|
Subject: [PATCH 2/7] devices file: fail if --devicesfile filename doesn't |
|
exist |
|
|
|
A typo of the filename after --devicesfile should result in a |
|
command error rather than the command falling back to using no |
|
devices file at all. Exception is vgcreate|pvcreate which |
|
create a new devices file if the file name doesn't exist. |
|
|
|
(cherry picked from commit bfe072e4388b530cbf5369be8a8f1305220198bf) |
|
--- |
|
lib/device/dev-cache.c | 9 +++++++++ |
|
test/shell/devicesfile-basic.sh | 4 ++++ |
|
2 files changed, 13 insertions(+) |
|
|
|
diff --git a/lib/device/dev-cache.c b/lib/device/dev-cache.c |
|
index 3aaf6a2e5..ed9c726c9 100644 |
|
--- a/lib/device/dev-cache.c |
|
+++ b/lib/device/dev-cache.c |
|
@@ -1863,6 +1863,15 @@ int setup_devices(struct cmd_context *cmd) |
|
|
|
file_exists = devices_file_exists(cmd); |
|
|
|
+ /* |
|
+ * Fail if user specifies a file name that doesn't exist and |
|
+ * the command is not creating a new devices file. |
|
+ */ |
|
+ if (!file_exists && !cmd->create_edit_devices_file && cmd->devicesfile && strlen(cmd->devicesfile)) { |
|
+ log_error("Devices file not found: %s", cmd->devices_file_path); |
|
+ return 0; |
|
+ } |
|
+ |
|
/* |
|
* Removing the devices file is another way of disabling the use of |
|
* a devices file, unless the command creates the devices file. |
|
diff --git a/test/shell/devicesfile-basic.sh b/test/shell/devicesfile-basic.sh |
|
index 9c3455c76..77fe265a0 100644 |
|
--- a/test/shell/devicesfile-basic.sh |
|
+++ b/test/shell/devicesfile-basic.sh |
|
@@ -104,6 +104,10 @@ not ls "$DFDIR/system.devices" |
|
vgs --devicesfile test.devices $vg1 |
|
not vgs --devicesfile test.devices $vg2 |
|
|
|
+# misspelled override name fails |
|
+not vgs --devicesfile doesnotexist $vg1 |
|
+not vgs --devicesfile doesnotexist $vg2 |
|
+ |
|
# devicesfile and devices cannot be used together |
|
not vgs --devicesfile test.devices --devices "$dev1","$dev1" $vg1 |
|
|
|
-- |
|
2.34.3 |
|
|
|
|