60 lines
2.0 KiB
Diff
60 lines
2.0 KiB
Diff
|
From e679a4002ecea6d8177430d6efde2b3ef2b89d0e Mon Sep 17 00:00:00 2001
|
||
|
From: Julian Wiedmann <jwi@linux.ibm.com>
|
||
|
Date: Wed, 13 May 2020 18:19:35 +0200
|
||
|
Subject: [PATCH] lsluns: try harder to find udevadm
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
Hard-coding udevadm's location isn't robust enough - for instance,
|
||
|
Ubuntu 20.04 moved it to /usr/bin.
|
||
|
|
||
|
First see if we can reach it through $PATH, then fall back to hard-coded
|
||
|
locations that we know about.
|
||
|
Also when finally falling back to udevsettle, check that it exists.
|
||
|
Otherwise we end up throwing tons of "No such file or directory" error
|
||
|
messages at the user.
|
||
|
|
||
|
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
|
||
|
Reviewed-by: Steffen Maier <maier@linux.ibm.com>
|
||
|
Reviewed-by: Fedor Loshakov <loshakov@linux.ibm.com>
|
||
|
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
|
||
|
---
|
||
|
zconf/lsluns | 17 +++++++++++++----
|
||
|
1 file changed, 13 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/zconf/lsluns b/zconf/lsluns
|
||
|
index bfe48f1..7144c78 100755
|
||
|
--- a/zconf/lsluns
|
||
|
+++ b/zconf/lsluns
|
||
|
@@ -24,13 +24,22 @@ my $wlun = "0xc101000000000000";
|
||
|
my $lun0 = "0x0000000000000000";
|
||
|
my $sg_dir = "/sys/class/scsi_generic";
|
||
|
my $udevsettle_call;
|
||
|
-my $udevadm = "/sbin/udevadm";
|
||
|
|
||
|
|
||
|
-if (! -e $udevadm) {
|
||
|
- $udevsettle_call = "/sbin/udevsettle";
|
||
|
+# See if we can find udevadm through $PATH:
|
||
|
+if (!system("udevadm --version > /dev/null 2>&1")) {
|
||
|
+ $udevsettle_call = "udevadm settle";
|
||
|
+# Search udevadm in well-known locations:
|
||
|
+} elsif (-e "/sbin/udevadm") {
|
||
|
+ $udevsettle_call = "/sbin/udevadm settle";
|
||
|
+} elsif (-e "/usr/bin/udevadm") {
|
||
|
+ $udevsettle_call = "/usr/bin/udevadm settle";
|
||
|
+# Fall back to udevsettle:
|
||
|
+} elsif (-e "/sbin/udevsettle") {
|
||
|
+ $udevsettle_call = "/sbin/udevsettle";
|
||
|
} else {
|
||
|
- $udevsettle_call = "$udevadm settle";
|
||
|
+ $udevsettle_call = "";
|
||
|
+ print "Failed to find any candidate for udevsettle.\n";
|
||
|
}
|
||
|
|
||
|
# read the first line of a sysfs-entry and compare it to a given string
|
||
|
--
|
||
|
2.26.2
|
||
|
|