diff options
author | David Teigland <teigland@redhat.com> | 2022-05-27 14:27:03 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2022-05-27 14:27:03 -0500 |
commit | bfe072e4388b530cbf5369be8a8f1305220198bf (patch) | |
tree | e6ffb52cf254309d9ae113d9e43fa7b28a40d65e | |
parent | 9dfa6f38793f6b5f7de2a4148ab2f7790e3c39da (diff) | |
download | lvm2-bfe072e4388b530cbf5369be8a8f1305220198bf.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 3aaf6a2e5..ed9c726c9 100644 --- a/lib/device/dev-cache.c +++ b/lib/device/dev-cache.c @@ -1864,6 +1864,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 |