|
Harald Hoyer |
fe48c9 |
From 281327f72cfc4c9ef6308039c7e1da82f79b139f Mon Sep 17 00:00:00 2001
|
|
Harald Hoyer |
fe48c9 |
From: Harald Hoyer <harald@redhat.com>
|
|
Harald Hoyer |
fe48c9 |
Date: Mon, 26 Aug 2013 14:04:56 +0200
|
|
Harald Hoyer |
fe48c9 |
Subject: [PATCH] dmraid/mdraid: improve hostonly recognition
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
Factor out get_devpath_block(), which also fixes a dmraid hostonly bug.
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
Also only include dmraid and mdraid, if they are actually in use.
|
|
Harald Hoyer |
fe48c9 |
---
|
|
Harald Hoyer |
fe48c9 |
dracut-functions.sh | 17 +++++++++++++++++
|
|
Harald Hoyer |
fe48c9 |
modules.d/90dmraid/module-setup.sh | 24 ++++++++++++------------
|
|
Harald Hoyer |
fe48c9 |
modules.d/90mdraid/module-setup.sh | 13 +++++++++++--
|
|
Harald Hoyer |
fe48c9 |
3 files changed, 40 insertions(+), 14 deletions(-)
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
diff --git a/dracut-functions.sh b/dracut-functions.sh
|
|
Harald Hoyer |
fe48c9 |
index c89d816..9b24419 100755
|
|
Harald Hoyer |
fe48c9 |
--- a/dracut-functions.sh
|
|
Harald Hoyer |
fe48c9 |
+++ b/dracut-functions.sh
|
|
Harald Hoyer |
fe48c9 |
@@ -296,6 +296,23 @@ get_maj_min() {
|
|
Harald Hoyer |
fe48c9 |
printf "%s" "$((0x${_majmin%:*})):$((0x${_majmin#*:}))"
|
|
Harald Hoyer |
fe48c9 |
}
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
+
|
|
Harald Hoyer |
fe48c9 |
+# get_devpath_block <device>
|
|
Harald Hoyer |
fe48c9 |
+# get the DEVPATH in /sys of a block device
|
|
Harald Hoyer |
fe48c9 |
+get_devpath_block() {
|
|
Harald Hoyer |
fe48c9 |
+ local majmin i
|
|
Harald Hoyer |
fe48c9 |
+ _majmin=$(get_maj_min "$1")
|
|
Harald Hoyer |
fe48c9 |
+
|
|
Harald Hoyer |
fe48c9 |
+ for _i in /sys/block/*/dev /sys/block/*/*/dev; do
|
|
Harald Hoyer |
fe48c9 |
+ [[ -e "$_i" ]] || continue
|
|
Harald Hoyer |
fe48c9 |
+ if [[ "$_majmin" == "$(<"$_i")" ]]; then
|
|
Harald Hoyer |
fe48c9 |
+ printf "%s" "${_i%/dev}"
|
|
Harald Hoyer |
fe48c9 |
+ return 0
|
|
Harald Hoyer |
fe48c9 |
+ fi
|
|
Harald Hoyer |
fe48c9 |
+ done
|
|
Harald Hoyer |
fe48c9 |
+ return 1
|
|
Harald Hoyer |
fe48c9 |
+}
|
|
Harald Hoyer |
fe48c9 |
+
|
|
Harald Hoyer |
fe48c9 |
# get a persistent path from a device
|
|
Harald Hoyer |
fe48c9 |
get_persistent_dev() {
|
|
Harald Hoyer |
fe48c9 |
local i _tmp _dev
|
|
Harald Hoyer |
fe48c9 |
diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh
|
|
Harald Hoyer |
fe48c9 |
index 2d73963..11181cf 100755
|
|
Harald Hoyer |
fe48c9 |
--- a/modules.d/90dmraid/module-setup.sh
|
|
Harald Hoyer |
fe48c9 |
+++ b/modules.d/90dmraid/module-setup.sh
|
|
Harald Hoyer |
fe48c9 |
@@ -9,8 +9,17 @@ check() {
|
|
Harald Hoyer |
fe48c9 |
type -P dmraid >/dev/null || return 1
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
|
Harald Hoyer |
fe48c9 |
- for fs in "${host_fs_types[@]}"; do
|
|
Harald Hoyer |
fe48c9 |
- [[ $fs = *_raid_member ]] && return 0
|
|
Harald Hoyer |
fe48c9 |
+ for dev in "${!host_fs_types[@]}"; do
|
|
Harald Hoyer |
fe48c9 |
+ [[ "${host_fs_types[$dev]}" != *_raid_member ]] && continue
|
|
Harald Hoyer |
fe48c9 |
+
|
|
Harald Hoyer |
fe48c9 |
+ DEVPATH=$(get_devpath_block "$dev")
|
|
Harald Hoyer |
fe48c9 |
+
|
|
Harald Hoyer |
fe48c9 |
+ for holder in "$DEVPATH"/holders/*; do
|
|
Harald Hoyer |
fe48c9 |
+ [[ -e "$holder" ]] || continue
|
|
Harald Hoyer |
fe48c9 |
+ [[ -e "$holder/dm" ]] && return 0
|
|
Harald Hoyer |
fe48c9 |
+ break
|
|
Harald Hoyer |
fe48c9 |
+ done
|
|
Harald Hoyer |
fe48c9 |
+
|
|
Harald Hoyer |
fe48c9 |
done
|
|
Harald Hoyer |
fe48c9 |
return 255
|
|
Harald Hoyer |
fe48c9 |
}
|
|
Harald Hoyer |
fe48c9 |
@@ -31,16 +40,7 @@ cmdline() {
|
|
Harald Hoyer |
fe48c9 |
local holder DEVPATH DM_NAME majmin
|
|
Harald Hoyer |
fe48c9 |
[[ "${host_fs_types[$dev]}" != *_raid_member ]] && continue
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
- majmin=$(get_maj_min $dev)
|
|
Harald Hoyer |
fe48c9 |
- DEVPATH=$(
|
|
Harald Hoyer |
fe48c9 |
- for i in /sys/block/*; do
|
|
Harald Hoyer |
fe48c9 |
- [[ -e "$i/dev" ]] || continue
|
|
Harald Hoyer |
fe48c9 |
- if [[ $a == $(<"$i/dev") ]]; then
|
|
Harald Hoyer |
fe48c9 |
- printf "%s" "$i"
|
|
Harald Hoyer |
fe48c9 |
- break
|
|
Harald Hoyer |
fe48c9 |
- fi
|
|
Harald Hoyer |
fe48c9 |
- done
|
|
Harald Hoyer |
fe48c9 |
- )
|
|
Harald Hoyer |
fe48c9 |
+ DEVPATH=$(get_devpath_block "$dev")
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
for holder in "$DEVPATH"/holders/*; do
|
|
Harald Hoyer |
fe48c9 |
[[ -e "$holder" ]] || continue
|
|
Harald Hoyer |
fe48c9 |
diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh
|
|
Harald Hoyer |
fe48c9 |
index 2bedbfd..5df2274 100755
|
|
Harald Hoyer |
fe48c9 |
--- a/modules.d/90mdraid/module-setup.sh
|
|
Harald Hoyer |
fe48c9 |
+++ b/modules.d/90mdraid/module-setup.sh
|
|
Harald Hoyer |
fe48c9 |
@@ -8,8 +8,17 @@ check() {
|
|
Harald Hoyer |
fe48c9 |
type -P mdadm >/dev/null || return 1
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
|
Harald Hoyer |
fe48c9 |
- for fs in "${host_fs_types[@]}"; do
|
|
Harald Hoyer |
fe48c9 |
- [[ "$fs" == *_raid_member ]] && return 0
|
|
Harald Hoyer |
fe48c9 |
+ for dev in "${!host_fs_types[@]}"; do
|
|
Harald Hoyer |
fe48c9 |
+ [[ "${host_fs_types[$dev]}" != *_raid_member ]] && continue
|
|
Harald Hoyer |
fe48c9 |
+
|
|
Harald Hoyer |
fe48c9 |
+ DEVPATH=$(get_devpath_block "$dev")
|
|
Harald Hoyer |
fe48c9 |
+
|
|
Harald Hoyer |
fe48c9 |
+ for holder in "$DEVPATH"/holders/*; do
|
|
Harald Hoyer |
fe48c9 |
+ [[ -e "$holder" ]] || continue
|
|
Harald Hoyer |
fe48c9 |
+ [[ -e "$holder/md" ]] && return 0
|
|
Harald Hoyer |
fe48c9 |
+ break
|
|
Harald Hoyer |
fe48c9 |
+ done
|
|
Harald Hoyer |
fe48c9 |
+
|
|
Harald Hoyer |
fe48c9 |
done
|
|
Harald Hoyer |
fe48c9 |
return 255
|
|
Harald Hoyer |
fe48c9 |
}
|