54 lines
1.9 KiB
Diff
54 lines
1.9 KiB
Diff
|
From bf0b3962088fb18f4a2aba00f38955e1fc6e31fe Mon Sep 17 00:00:00 2001
|
||
|
From: David Teigland <teigland@redhat.com>
|
||
|
Date: Fri, 27 May 2022 14:27:03 -0500
|
||
|
Subject: [PATCH 50/54] 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.
|
||
|
---
|
||
|
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 b0759b06c..0eb2568b5 100644
|
||
|
--- a/lib/device/dev-cache.c
|
||
|
+++ b/lib/device/dev-cache.c
|
||
|
@@ -1882,6 +1882,15 @@ static int _setup_devices(struct cmd_context *cmd, int no_file_match)
|
||
|
|
||
|
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 7ba9e2c7f..d1cfb6a35 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
|
||
|
|