|
Harald Hoyer |
d9da66 |
From 9ed6eb741f0bc0178167e7063751eb2bb4ac6de5 Mon Sep 17 00:00:00 2001
|
|
Harald Hoyer |
d9da66 |
From: Harald Hoyer <harald@redhat.com>
|
|
Harald Hoyer |
d9da66 |
Date: Mon, 15 Jan 2018 15:44:46 +0100
|
|
Harald Hoyer |
d9da66 |
Subject: [PATCH] dracut-functions.sh:check_vol_slaves() speedup LV -> VG name
|
|
Harald Hoyer |
d9da66 |
|
|
Harald Hoyer |
d9da66 |
Instead of trying all /dev/mapper/* devices to match the maj:min, and
|
|
Harald Hoyer |
d9da66 |
get the VG name with "lvm lvs", use the dm/name from /sys and dmsetup
|
|
Harald Hoyer |
d9da66 |
splitname.
|
|
Harald Hoyer |
d9da66 |
|
|
Harald Hoyer |
d9da66 |
This should speedup execution with lots of LVs.
|
|
Harald Hoyer |
d9da66 |
---
|
|
Harald Hoyer |
d9da66 |
dracut-functions.sh | 64 ++++++++++++++++++++++++-----------------------------
|
|
Harald Hoyer |
d9da66 |
1 file changed, 29 insertions(+), 35 deletions(-)
|
|
Harald Hoyer |
d9da66 |
|
|
Harald Hoyer |
d9da66 |
diff --git a/dracut-functions.sh b/dracut-functions.sh
|
|
Harald Hoyer |
d9da66 |
index e99c4533..badd2a22 100755
|
|
Harald Hoyer |
d9da66 |
--- a/dracut-functions.sh
|
|
Harald Hoyer |
d9da66 |
+++ b/dracut-functions.sh
|
|
Harald Hoyer |
d9da66 |
@@ -560,45 +560,39 @@ for_each_host_dev_and_slaves()
|
|
Harald Hoyer |
d9da66 |
# but you cannot create the logical volume without the volume group.
|
|
Harald Hoyer |
d9da66 |
# And the volume group might be bigger than the devices the LV needs.
|
|
Harald Hoyer |
d9da66 |
check_vol_slaves() {
|
|
Harald Hoyer |
d9da66 |
- local _lv _vg _pv _dm
|
|
Harald Hoyer |
d9da66 |
- for i in /dev/mapper/*; do
|
|
Harald Hoyer |
d9da66 |
- [[ $i == /dev/mapper/control ]] && continue
|
|
Harald Hoyer |
d9da66 |
- _lv=$(get_maj_min $i)
|
|
Harald Hoyer |
d9da66 |
- _dm=/sys/dev/block/$_lv/dm
|
|
Harald Hoyer |
d9da66 |
- [[ -f $_dm/uuid && $(<$_dm/uuid) =~ LVM-* ]] || continue
|
|
Harald Hoyer |
d9da66 |
- if [[ $_lv = $2 ]]; then
|
|
Harald Hoyer |
d9da66 |
- _vg=$(lvm lvs --noheadings -o vg_name $i 2>/dev/null)
|
|
Harald Hoyer |
d9da66 |
- # strip space
|
|
Harald Hoyer |
d9da66 |
- _vg="${_vg//[[:space:]]/}"
|
|
Harald Hoyer |
d9da66 |
- if [[ $_vg ]]; then
|
|
Harald Hoyer |
d9da66 |
- for _pv in $(lvm vgs --noheadings -o pv_name "$_vg" 2>/dev/null)
|
|
Harald Hoyer |
d9da66 |
- do
|
|
Harald Hoyer |
d9da66 |
- check_block_and_slaves $1 $(get_maj_min $_pv) && return 0
|
|
Harald Hoyer |
d9da66 |
- done
|
|
Harald Hoyer |
d9da66 |
- fi
|
|
Harald Hoyer |
d9da66 |
- fi
|
|
Harald Hoyer |
d9da66 |
- done
|
|
Harald Hoyer |
d9da66 |
+ local _lv _vg _pv _dm _majmin
|
|
Harald Hoyer |
d9da66 |
+ _majmin="$2"
|
|
Harald Hoyer |
d9da66 |
+ _lv="/dev/block/$_majmin"
|
|
Harald Hoyer |
d9da66 |
+ _dm=/sys/dev/block/$_majmin/dm
|
|
Harald Hoyer |
d9da66 |
+ [[ -f $_dm/uuid && $(<$_dm/uuid) =~ LVM-* ]] || return 1
|
|
Harald Hoyer |
d9da66 |
+ _vg=$(dmsetup splitname --noheadings -o vg_name $(<"$_dm/name") )
|
|
Harald Hoyer |
d9da66 |
+ # strip space
|
|
Harald Hoyer |
d9da66 |
+ _vg="${_vg//[[:space:]]/}"
|
|
Harald Hoyer |
d9da66 |
+ if [[ $_vg ]]; then
|
|
Harald Hoyer |
d9da66 |
+ for _pv in $(lvm vgs --noheadings -o pv_name "$_vg" 2>/dev/null)
|
|
Harald Hoyer |
d9da66 |
+ do
|
|
Harald Hoyer |
d9da66 |
+ check_block_and_slaves $1 $(get_maj_min $_pv) && return 0
|
|
Harald Hoyer |
d9da66 |
+ done
|
|
Harald Hoyer |
d9da66 |
+ fi
|
|
Harald Hoyer |
d9da66 |
return 1
|
|
Harald Hoyer |
d9da66 |
}
|
|
Harald Hoyer |
d9da66 |
|
|
Harald Hoyer |
d9da66 |
check_vol_slaves_all() {
|
|
Harald Hoyer |
d9da66 |
- local _lv _vg _pv
|
|
Harald Hoyer |
d9da66 |
- for i in /dev/mapper/*; do
|
|
Harald Hoyer |
d9da66 |
- [[ $i == /dev/mapper/control ]] && continue
|
|
Harald Hoyer |
d9da66 |
- _lv=$(get_maj_min $i)
|
|
Harald Hoyer |
d9da66 |
- if [[ $_lv = $2 ]]; then
|
|
Harald Hoyer |
d9da66 |
- _vg=$(lvm lvs --noheadings -o vg_name $i 2>/dev/null)
|
|
Harald Hoyer |
d9da66 |
- # strip space
|
|
Harald Hoyer |
d9da66 |
- _vg="${_vg//[[:space:]]/}"
|
|
Harald Hoyer |
d9da66 |
- if [[ $_vg ]]; then
|
|
Harald Hoyer |
d9da66 |
- for _pv in $(lvm vgs --noheadings -o pv_name "$_vg" 2>/dev/null)
|
|
Harald Hoyer |
d9da66 |
- do
|
|
Harald Hoyer |
d9da66 |
- check_block_and_slaves_all $1 $(get_maj_min $_pv)
|
|
Harald Hoyer |
d9da66 |
- done
|
|
Harald Hoyer |
d9da66 |
- return 0
|
|
Harald Hoyer |
d9da66 |
- fi
|
|
Harald Hoyer |
d9da66 |
- fi
|
|
Harald Hoyer |
d9da66 |
- done
|
|
Harald Hoyer |
d9da66 |
+ local _lv _vg _pv _majmin
|
|
Harald Hoyer |
d9da66 |
+ _majmin="$2"
|
|
Harald Hoyer |
d9da66 |
+ _lv="/dev/block/$_majmin"
|
|
Harald Hoyer |
d9da66 |
+ _dm="/sys/dev/block/$_majmin/dm"
|
|
Harald Hoyer |
d9da66 |
+ [[ -f $_dm/uuid && $(<$_dm/uuid) =~ LVM-* ]] || return 1
|
|
Harald Hoyer |
d9da66 |
+ _vg=$(dmsetup splitname --noheadings -o vg_name $(<"$_dm/name") )
|
|
Harald Hoyer |
d9da66 |
+ # strip space
|
|
Harald Hoyer |
d9da66 |
+ _vg="${_vg//[[:space:]]/}"
|
|
Harald Hoyer |
d9da66 |
+ if [[ $_vg ]]; then
|
|
Harald Hoyer |
d9da66 |
+ for _pv in $(lvm vgs --noheadings -o pv_name "$_vg" 2>/dev/null)
|
|
Harald Hoyer |
d9da66 |
+ do
|
|
Harald Hoyer |
d9da66 |
+ check_block_and_slaves_all $1 $(get_maj_min $_pv)
|
|
Harald Hoyer |
d9da66 |
+ done
|
|
Harald Hoyer |
d9da66 |
+ return 0
|
|
Harald Hoyer |
d9da66 |
+ fi
|
|
Harald Hoyer |
d9da66 |
return 1
|
|
Harald Hoyer |
d9da66 |
}
|
|
Harald Hoyer |
d9da66 |
|
|
Harald Hoyer |
d9da66 |
|