You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.1 KiB
56 lines
2.1 KiB
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 |
|
|
|
|
|
|