Merge pull request #21207 from mrc0mmand/test-tweak-lvm-installation

test: support the new lvm udev autoactivation
This commit is contained in:
Frantisek Sumsal
2021-11-02 14:09:57 +00:00
committed by GitHub
2 changed files with 48 additions and 4 deletions
+9 -2
View File
@@ -951,13 +951,20 @@ install_multipath() {
install_lvm() {
image_install lvm
image_install "${ROOTLIBDIR:?}"/system/lvm2-lvmpolld.{service,socket}
image_install "${ROOTLIBDIR:?}"/system/{blk-availability,lvm2-monitor,lvm2-pvscan@}.service
image_install "${ROOTLIBDIR:?}"/system/{blk-availability,lvm2-monitor}.service
image_install "${ROOTLIBDIR:?}"/system-generators/lvm2-activation-generator
image_install -o "/lib/tmpfiles.d/lvm2.conf"
if get_bool "$LOOKS_LIKE_DEBIAN"; then
inst_rules 56-lvm.rules 69-lvm-metad.rules
else
inst_rules 11-dm-lvm.rules 69-dm-lvm-metad.rules
# Support the new udev autoactivation introduced in lvm 2.03.14
# https://sourceware.org/git/?p=lvm2.git;a=commit;h=67722b312390cdab29c076c912e14bd739c5c0f6
if [[ -f /lib/udev/rules.d/69-dm-lvm.rules ]]; then
inst_rules 11-dm-lvm.rules 69-dm-lvm.rules
else
image_install "${ROOTLIBDIR:?}"/system/lvm2-pvscan@.service
inst_rules 11-dm-lvm.rules 69-dm-lvm-metad.rules
fi
fi
mkdir -p "${initdir:?}/etc/lvm"
}
+39 -2
View File
@@ -58,6 +58,43 @@ helper_wait_for_dev() {
return 1
}
# Wrapper around `helper_wait_for_lvm_activate()` and `helper_wait_for_pvscan()`
# functions to cover differences between pre and post lvm 2.03.14, which introduced
# a new way of vgroup autoactivation
# See: https://sourceware.org/git/?p=lvm2.git;a=commit;h=67722b312390cdab29c076c912e14bd739c5c0f6
# Arguments:
# $1 - device path (for helper_wait_for_pvscan())
# $2 - volume group name (for helper_wait_for_lvm_activate())
# $3 - number of retries (default: 10)
helper_wait_for_vgroup() {
local dev="${1:?}"
local vgroup="${2:?}"
local ntries="${3:-10}"
if ! systemctl -q list-unit-files lvm2-pvscan@.service >/dev/null; then
helper_wait_for_lvm_activate "$vgroup" "$ntries"
else
helper_wait_for_pvscan "$dev" "$ntries"
fi
}
# Wait for the lvm-activate-$vgroup.service of a specific $vgroup to finish
# Arguments:
# $1 - volume group name
# $2 - number of retries (default: 10)
helper_wait_for_lvm_activate() {
local vgroup="${1:?}"
local ntries="${2:-10}"
local i
for ((i = 0; i < ntries; i++)); do
! systemctl -q is-active "lvm-activate-$vgroup.service" || return 0
sleep .5
done
return 1
}
# Wait for the lvm2-pvscan@.service of a specific device to finish
# Arguments:
# $1 - device path
@@ -65,7 +102,7 @@ helper_wait_for_dev() {
helper_wait_for_pvscan() {
local dev="${1:?}"
local ntries="${2:-10}"
local MAJOR MINOR pvscan_svc real_dev
local MAJOR MINOR i pvscan_svc real_dev
# Sanity check we got a valid block device (or a symlink to it)
real_dev="$(readlink -f "$dev")"
@@ -576,7 +613,7 @@ testcase_iscsi_lvm() {
udevadm settle
for link in "${expected_symlinks[@]}"; do
helper_wait_for_dev "$link"
helper_wait_for_pvscan "$link"
helper_wait_for_vgroup "$link" "$vgroup"
test -e "$link"
done
udevadm settle