57 lines
2.1 KiB
Diff
57 lines
2.1 KiB
Diff
From ec9b1e872ad3be0ec9440927a0f702c7bfa80932 Mon Sep 17 00:00:00 2001
|
|
From: David Teigland <teigland@redhat.com>
|
|
Date: Fri, 10 Dec 2021 12:51:26 -0600
|
|
Subject: [PATCH] feat(lvm): only run lvchange for LV that is seen on devices
|
|
|
|
Change the command listing LVs from lvscan to lvs, and list
|
|
only the LV names that are being activated. Before attempting
|
|
to activate an LV, check that that LV name appears in the
|
|
lvs command output. This avoids wasting time running an
|
|
lvchange command that we know will fail.
|
|
|
|
(cherry picked from commit 1af46743195422aaebcde5c508a5dd479eff51ea)
|
|
|
|
Resolves: #2037955
|
|
---
|
|
modules.d/90lvm/lvm_scan.sh | 18 ++++++++++++++----
|
|
1 file changed, 14 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/modules.d/90lvm/lvm_scan.sh b/modules.d/90lvm/lvm_scan.sh
|
|
index bda265f6..89f077ae 100755
|
|
--- a/modules.d/90lvm/lvm_scan.sh
|
|
+++ b/modules.d/90lvm/lvm_scan.sh
|
|
@@ -119,7 +119,7 @@ sub=${sub%%\(*}
|
|
# ignores locking failures (--ignorelockingfailure)
|
|
# disables hints (--nohints)
|
|
#
|
|
-# For lvscan and vgscan:
|
|
+# For lvs and vgscan:
|
|
# disable locking (--nolocking)
|
|
# disable hints (--nohints)
|
|
|
|
@@ -136,10 +136,20 @@ check_lvm_ver 2 3 14 "$maj" "$min" "$sub" \
|
|
if [ -n "$LVS" ]; then
|
|
info "Scanning devices $lvmdevs for LVM logical volumes $LVS"
|
|
# shellcheck disable=SC2086
|
|
- lvm lvscan $scan_args 2>&1 | vinfo
|
|
+ LVSLIST=$(lvm lvs $scan_args --noheading -o lv_full_name,segtype $LVS)
|
|
+ info "$LVSLIST"
|
|
+
|
|
+ # Only attempt to activate an LV if it appears in the lvs output.
|
|
for LV in $LVS; do
|
|
- # shellcheck disable=SC2086
|
|
- lvm lvchange --yes -K -ay $activate_args "$LV" 2>&1 | vinfo
|
|
+ if strstr "$LVSLIST" "$LV"; then
|
|
+ # This lvchange is expected to fail if all PVs used by
|
|
+ # the LV are not yet present. Premature/failed lvchange
|
|
+ # could be avoided by reporting if an LV is complete
|
|
+ # from the lvs command above and skipping this lvchange
|
|
+ # if the LV is not lised as complete.
|
|
+ # shellcheck disable=SC2086
|
|
+ lvm lvchange --yes -K -ay $activate_args "$LV" 2>&1 | vinfo
|
|
+ fi
|
|
done
|
|
fi
|
|
|
|
|