diff options
author | David Teigland <teigland@redhat.com> | 2022-05-27 14:27:03 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2022-06-09 14:33:30 -0500 |
commit | bf0b3962088fb18f4a2aba00f38955e1fc6e31fe (patch) | |
tree | 9cdd30540125a1fab50c6bede8ce8d4328a6eb7e | |
parent | eda98e4b9418568d6793d2c853aaa54db051cc9f (diff) | |
download | lvm2-bf0b3962088fb18f4a2aba00f38955e1fc6e31fe.tar.gz |
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.
-rw-r--r-- | lib/device/dev-cache.c | 9 | ||||
-rw-r--r-- | test/shell/devicesfile-basic.sh | 4 |
2 files changed, 13 insertions, 0 deletions
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 @@ -1883,6 +1883,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 |