Blame SOURCES/0050-devices-file-fail-if-devicesfile-filename-doesn-t-ex.patch

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