- fixed mdraid for IMSM
This commit is contained in:
parent
d3fc767b67
commit
3fb223250f
102
0009-mdraid_start.sh-fixed-raid-activation.patch
Normal file
102
0009-mdraid_start.sh-fixed-raid-activation.patch
Normal file
@ -0,0 +1,102 @@
|
||||
From 587b3497c149780f8c4e680d19a880418c5cc8bb Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Mon, 7 Sep 2009 14:11:18 +0200
|
||||
Subject: [PATCH 09/12] mdraid_start.sh: fixed raid activation
|
||||
|
||||
---
|
||||
modules.d/90mdraid/65-md-incremental-imsm.rules | 6 ++++++
|
||||
modules.d/90mdraid/install | 3 ++-
|
||||
modules.d/90mdraid/mdcontainer_start.sh | 9 +++++++++
|
||||
modules.d/90mdraid/mdraid_start.sh | 18 ++----------------
|
||||
modules.d/95debug/install | 2 +-
|
||||
5 files changed, 20 insertions(+), 18 deletions(-)
|
||||
create mode 100755 modules.d/90mdraid/mdcontainer_start.sh
|
||||
|
||||
diff --git a/modules.d/90mdraid/65-md-incremental-imsm.rules b/modules.d/90mdraid/65-md-incremental-imsm.rules
|
||||
index 8385fb4..5104fc5 100644
|
||||
--- a/modules.d/90mdraid/65-md-incremental-imsm.rules
|
||||
+++ b/modules.d/90mdraid/65-md-incremental-imsm.rules
|
||||
@@ -23,3 +23,9 @@ RUN+="/sbin/mdadm -I --no-degraded $env{DEVNAME}"
|
||||
RUN+="/bin/sh -c '>/tmp/.mdraid_start-%k; /bin/ln -s /sbin/mdraid_start /initqueue/mdraid_start.sh'"
|
||||
|
||||
LABEL="md_inc_end"
|
||||
+
|
||||
+ACTION=="add|change", \
|
||||
+ ENV{DEVTYPE}!="partition", \
|
||||
+ ENV{MD_LEVEL}=="container", \
|
||||
+ TEST!="/tmp/.mdcontainer_start-%k", \
|
||||
+ RUN+="/bin/sh -c '>/tmp/.mdcontainer_start-%k; initqueue /sbin/mdcontainer_start $env{DEVNAME}'"
|
||||
diff --git a/modules.d/90mdraid/install b/modules.d/90mdraid/install
|
||||
index 71c313b..c2de3bb 100755
|
||||
--- a/modules.d/90mdraid/install
|
||||
+++ b/modules.d/90mdraid/install
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
-dracut_install mdadm partx grep
|
||||
+dracut_install mdadm partx
|
||||
|
||||
|
||||
# XXX: mdmon really needs to run as non-root?
|
||||
@@ -32,6 +32,7 @@ if [ -x /sbin/mdmon ] ; then
|
||||
fi
|
||||
|
||||
inst "$moddir/mdraid_start.sh" /sbin/mdraid_start
|
||||
+inst "$moddir/mdcontainer_start.sh" /sbin/mdcontainer_start
|
||||
inst_hook pre-trigger 30 "$moddir/parse-md.sh"
|
||||
inst_hook pre-pivot 30 "$moddir/mdraid-cleanup.sh"
|
||||
inst_hook pre-pivot 31 "$moddir/mdraid-cleanup.sh"
|
||||
diff --git a/modules.d/90mdraid/mdcontainer_start.sh b/modules.d/90mdraid/mdcontainer_start.sh
|
||||
new file mode 100755
|
||||
index 0000000..403b62b
|
||||
--- /dev/null
|
||||
+++ b/modules.d/90mdraid/mdcontainer_start.sh
|
||||
@@ -0,0 +1,9 @@
|
||||
+#!/bin/sh
|
||||
+. /lib/dracut-lib.sh
|
||||
+
|
||||
+if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then
|
||||
+ # run mdadm if udev has settled
|
||||
+ md=$1
|
||||
+ # and activate any containers
|
||||
+ mdadm -IR $md 2>&1 | vinfo
|
||||
+fi
|
||||
diff --git a/modules.d/90mdraid/mdraid_start.sh b/modules.d/90mdraid/mdraid_start.sh
|
||||
index a6868bd..55e7d9c 100755
|
||||
--- a/modules.d/90mdraid/mdraid_start.sh
|
||||
+++ b/modules.d/90mdraid/mdraid_start.sh
|
||||
@@ -4,20 +4,6 @@ if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then
|
||||
[ -h "$job" ] && rm -f "$job"
|
||||
# run mdadm if udev has settled
|
||||
info "Assembling MD RAID arrays"
|
||||
-
|
||||
- # and activate any containers
|
||||
- for md in /dev/md?*; do
|
||||
- case $md in
|
||||
- /dev/md*p*) ;;
|
||||
- *)
|
||||
- if mdadm --query --test --detail $md 2>&1|grep -q 'does not appear to be active'; then
|
||||
- info "Starting MD RAID array $md"
|
||||
- mdadm -R $md 2>&1 | vinfo
|
||||
- if mdadm --query --test --detail $md 2>&1|grep -q 'does not appear to be active'; then
|
||||
- mdadm -IR $md 2>&1 | vinfo
|
||||
- fi
|
||||
- udevsettle
|
||||
- fi
|
||||
- esac
|
||||
- done
|
||||
+ mdadm -IRs 2>&1 | vinfo
|
||||
+ udevsettle
|
||||
fi
|
||||
diff --git a/modules.d/95debug/install b/modules.d/95debug/install
|
||||
index 1597187..1c7afaf 100755
|
||||
--- a/modules.d/95debug/install
|
||||
+++ b/modules.d/95debug/install
|
||||
@@ -1,3 +1,3 @@
|
||||
#!/bin/bash
|
||||
dracut_install -o ps grep more cat rm strace free showmount
|
||||
-dracut_install -o ping netstat rpcinfo
|
||||
+dracut_install -o ping netstat rpcinfo vi
|
||||
--
|
||||
1.6.2.5
|
||||
|
21
0010-add-scp-to-debug-module.patch
Normal file
21
0010-add-scp-to-debug-module.patch
Normal file
@ -0,0 +1,21 @@
|
||||
From 4f4a79b1a13f9961030a3d97743274116f72054a Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Mon, 7 Sep 2009 17:10:19 +0200
|
||||
Subject: [PATCH 10/12] add scp to debug module
|
||||
|
||||
---
|
||||
modules.d/95debug/install | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/modules.d/95debug/install b/modules.d/95debug/install
|
||||
index 1c7afaf..cd8c48c 100755
|
||||
--- a/modules.d/95debug/install
|
||||
+++ b/modules.d/95debug/install
|
||||
@@ -1,3 +1,3 @@
|
||||
#!/bin/bash
|
||||
dracut_install -o ps grep more cat rm strace free showmount
|
||||
-dracut_install -o ping netstat rpcinfo vi
|
||||
+dracut_install -o ping netstat rpcinfo vi scp
|
||||
--
|
||||
1.6.2.5
|
||||
|
34
0011-mdraid-cleanup-do-not-stop-mdraid-container.patch
Normal file
34
0011-mdraid-cleanup-do-not-stop-mdraid-container.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From 906dedf4d57f03545094e75482072b12873926f8 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Mon, 7 Sep 2009 17:53:37 +0200
|
||||
Subject: [PATCH 11/12] mdraid-cleanup: do not stop mdraid container
|
||||
|
||||
---
|
||||
modules.d/90mdraid/mdraid-cleanup.sh | 15 +++++++++++++--
|
||||
1 files changed, 13 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/modules.d/90mdraid/mdraid-cleanup.sh b/modules.d/90mdraid/mdraid-cleanup.sh
|
||||
index 9c4469d..dc3b86f 100755
|
||||
--- a/modules.d/90mdraid/mdraid-cleanup.sh
|
||||
+++ b/modules.d/90mdraid/mdraid-cleanup.sh
|
||||
@@ -1,4 +1,15 @@
|
||||
# stop everything which is not busy
|
||||
-for i in /dev/md*; do
|
||||
- mdadm --stop $i >/dev/null 2>&1
|
||||
+for i in /dev/md* /dev/md/*; do
|
||||
+ [ -b $i ] || continue
|
||||
+
|
||||
+ mddetail=$(udevadm info --query=property --name=$i)
|
||||
+ case "$mddetail" in
|
||||
+ *MD_LEVEL=container*)
|
||||
+ ;;
|
||||
+ *DEVTYPE=partition*)
|
||||
+ ;;
|
||||
+ *)
|
||||
+ mdadm --stop $i >/dev/null 2>&1
|
||||
+ ;;
|
||||
+ esac
|
||||
done
|
||||
--
|
||||
1.6.2.5
|
||||
|
461
0012-added-initqueue-settled-and-refactored-code.patch
Normal file
461
0012-added-initqueue-settled-and-refactored-code.patch
Normal file
@ -0,0 +1,461 @@
|
||||
From 273b197d75da0165ce5ad22bcab6697bc22dbb04 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Mon, 7 Sep 2009 17:40:04 +0200
|
||||
Subject: [PATCH 12/12] added initqueue-settled and refactored code
|
||||
|
||||
---
|
||||
modules.d/90crypt/cryptroot-ask.sh | 2 -
|
||||
modules.d/90dmraid/61-dmraid-imsm.rules | 4 +-
|
||||
modules.d/90dmraid/dmraid.sh | 45 +++++++--------
|
||||
.../90dmsquash-live/dmsquash-live-genrules.sh | 4 +-
|
||||
modules.d/90lvm/64-lvm-vol_id.rules | 22 -------
|
||||
modules.d/90lvm/64-lvm.rules | 9 ++-
|
||||
modules.d/90lvm/install | 7 +--
|
||||
modules.d/90lvm/lvm_scan.sh | 61 +++++++++----------
|
||||
modules.d/90mdraid/65-md-incremental-imsm.rules | 42 ++++++++++++-
|
||||
modules.d/90mdraid/mdcontainer_start.sh | 9 +--
|
||||
modules.d/90mdraid/mdraid_start.sh | 11 +--
|
||||
modules.d/95rootfs-block/block-genrules.sh | 2 +-
|
||||
modules.d/99base/dracut-lib.sh | 7 ++
|
||||
modules.d/99base/init | 17 +++++-
|
||||
modules.d/99base/initqueue | 34 +++++++++--
|
||||
modules.d/99base/install | 1 +
|
||||
16 files changed, 160 insertions(+), 117 deletions(-)
|
||||
delete mode 100644 modules.d/90lvm/64-lvm-vol_id.rules
|
||||
|
||||
diff --git a/modules.d/90crypt/cryptroot-ask.sh b/modules.d/90crypt/cryptroot-ask.sh
|
||||
index a2ebde6..7872d64 100755
|
||||
--- a/modules.d/90crypt/cryptroot-ask.sh
|
||||
+++ b/modules.d/90crypt/cryptroot-ask.sh
|
||||
@@ -35,6 +35,4 @@ fi
|
||||
# mark device as asked
|
||||
>> /tmp/cryptroot-asked-$2
|
||||
|
||||
-udevsettle
|
||||
-
|
||||
exit 0
|
||||
diff --git a/modules.d/90dmraid/61-dmraid-imsm.rules b/modules.d/90dmraid/61-dmraid-imsm.rules
|
||||
index 172e09f..d610643 100644
|
||||
--- a/modules.d/90dmraid/61-dmraid-imsm.rules
|
||||
+++ b/modules.d/90dmraid/61-dmraid-imsm.rules
|
||||
@@ -11,7 +11,9 @@ ENV{ID_FS_TYPE}=="isw_raid_member", ENV{rd_NO_MDIMSM}!="?*", GOTO="dm_end"
|
||||
ENV{ID_FS_TYPE}!="*_raid_member", , GOTO="dm_end"
|
||||
TEST=="/tmp/.dmraid_scan-%k", GOTO="dm_end"
|
||||
|
||||
-RUN+="/bin/sh -c '>/tmp/.dmraid_scan-%k; /bin/ln -fs /sbin/dmraid_scan /initqueue/dmraid_scan.sh'"
|
||||
+RUN+="/sbin/initqueue --onetime --unique --settled /sbin/dmraid_scan"
|
||||
+
|
||||
+ACTION=="change", RUN+="/bin/sh -c '>/tmp/.dmraid_scan-%k'"
|
||||
|
||||
ENV{DEVTYPE}!="partition", \
|
||||
RUN+="/sbin/partx -d --nr 1-1024 $env{DEVNAME}"
|
||||
diff --git a/modules.d/90dmraid/dmraid.sh b/modules.d/90dmraid/dmraid.sh
|
||||
index 2cd6773..e382233 100755
|
||||
--- a/modules.d/90dmraid/dmraid.sh
|
||||
+++ b/modules.d/90dmraid/dmraid.sh
|
||||
@@ -1,28 +1,25 @@
|
||||
#!/bin/sh
|
||||
|
||||
-if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then
|
||||
- [ -h "$job" ] && rm -f "$job"
|
||||
- DM_RAIDS=$(getargs rd_DM_UUID=)
|
||||
- # run dmraid if udev has settled
|
||||
- info "Scanning for dmraid devices $DM_RAIDS"
|
||||
- if [ -n "$DM_RAIDS" ]; then
|
||||
- # only activate specified DM RAIDS
|
||||
- SETS=$(dmraid -c -s)
|
||||
- info "Found dmraid sets:"
|
||||
- echo $SETS|vinfo
|
||||
- for r in $DM_RAIDS; do
|
||||
- for s in $SETS; do
|
||||
- if [ "${s##$r}" != "$s" ]; then
|
||||
- info "Activating $s"
|
||||
- dmraid -ay $s 2>&1 | vinfo
|
||||
- udevsettle
|
||||
- fi
|
||||
- done
|
||||
+. /lib/dracut-lib.sh
|
||||
+
|
||||
+DM_RAIDS=$(getargs rd_DM_UUID=)
|
||||
+# run dmraid if udev has settled
|
||||
+info "Scanning for dmraid devices $DM_RAIDS"
|
||||
+if [ -n "$DM_RAIDS" ]; then
|
||||
+ # only activate specified DM RAIDS
|
||||
+ SETS=$(dmraid -c -s)
|
||||
+ info "Found dmraid sets:"
|
||||
+ echo $SETS|vinfo
|
||||
+ for r in $DM_RAIDS; do
|
||||
+ for s in $SETS; do
|
||||
+ if [ "${s##$r}" != "$s" ]; then
|
||||
+ info "Activating $s"
|
||||
+ dmraid -ay $s 2>&1 | vinfo
|
||||
+ udevsettle
|
||||
+ fi
|
||||
done
|
||||
- else
|
||||
- # scan and activate all DM RAIDS
|
||||
- dmraid -ay 2>&1 | vinfo
|
||||
- udevsettle
|
||||
- fi
|
||||
+ done
|
||||
+else
|
||||
+ # scan and activate all DM RAIDS
|
||||
+ dmraid -ay 2>&1 | vinfo
|
||||
fi
|
||||
-
|
||||
diff --git a/modules.d/90dmsquash-live/dmsquash-live-genrules.sh b/modules.d/90dmsquash-live/dmsquash-live-genrules.sh
|
||||
index a3858e1..4bf993d 100644
|
||||
--- a/modules.d/90dmsquash-live/dmsquash-live-genrules.sh
|
||||
+++ b/modules.d/90dmsquash-live/dmsquash-live-genrules.sh
|
||||
@@ -4,9 +4,9 @@ if [ "${root%%:*}" = "live" ]; then
|
||||
${root#live:/dev/}
|
||||
printf 'SYMLINK=="%s", SYMLINK+="live"\n' \
|
||||
${root#live:/dev/}
|
||||
- printf 'KERNEL=="%s", RUN+="/sbin/initqueue --onetime /sbin/dmsquash-live-root $env{DEVNAME}"\n' \
|
||||
+ printf 'KERNEL=="%s", RUN+="/sbin/initqueue --onetime --unique /sbin/dmsquash-live-root $env{DEVNAME}"\n' \
|
||||
${root#live:/dev/}
|
||||
- printf 'SYMLINK=="%s", RUN+="/sbin/initqueue --onetime /sbin/dmsquash-live-root $env{DEVNAME}"\n' \
|
||||
+ printf 'SYMLINK=="%s", RUN+="/sbin/initqueue --onetime --unique /sbin/dmsquash-live-root $env{DEVNAME}"\n' \
|
||||
${root#live:/dev/}
|
||||
|
||||
) >> /etc/udev/rules.d/99-live-mount.rules
|
||||
diff --git a/modules.d/90lvm/64-lvm-vol_id.rules b/modules.d/90lvm/64-lvm-vol_id.rules
|
||||
deleted file mode 100644
|
||||
index 4f349a6..0000000
|
||||
--- a/modules.d/90lvm/64-lvm-vol_id.rules
|
||||
+++ /dev/null
|
||||
@@ -1,22 +0,0 @@
|
||||
-# hacky rules to try to activate lvm when we get new block devs...
|
||||
-#
|
||||
-# Copyright 2008, Red Hat, Inc.
|
||||
-# Jeremy Katz <katzj@redhat.com>
|
||||
-
|
||||
-
|
||||
-SUBSYSTEM!="block", GOTO="lvm_end"
|
||||
-ACTION!="add|change", GOTO="lvm_end"
|
||||
-KERNEL=="dm-[0-9]*", ACTION!="change", GOTO="lvm_end"
|
||||
-
|
||||
-ENV{ID_FS_TYPE}=="LVM2_member", \
|
||||
- TEST!="/tmp/.lvm_scan-%k", \
|
||||
- RUN+="/bin/sh -c '>/tmp/.lvm_scan-%k; /bin/ln -fs /sbin/lvm_scan /initqueue/lvm_scan.sh'"
|
||||
-
|
||||
-KERNEL!="dm-[0-9]*", GOTO="lvm_end"
|
||||
-
|
||||
-OPTIONS="link_priority=-100"
|
||||
-ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
|
||||
-ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
|
||||
-
|
||||
-
|
||||
-LABEL="lvm_end"
|
||||
diff --git a/modules.d/90lvm/64-lvm.rules b/modules.d/90lvm/64-lvm.rules
|
||||
index 0a053ae..a200add 100644
|
||||
--- a/modules.d/90lvm/64-lvm.rules
|
||||
+++ b/modules.d/90lvm/64-lvm.rules
|
||||
@@ -7,9 +7,12 @@
|
||||
SUBSYSTEM!="block", GOTO="lvm_end"
|
||||
ACTION!="add|change", GOTO="lvm_end"
|
||||
KERNEL=="dm-[0-9]*", ACTION=="add", GOTO="lvm_end"
|
||||
+ENV{ID_FS_TYPE}!="LVM2_member", GOTO="lvm_end"
|
||||
|
||||
-ENV{ID_FS_TYPE}=="LVM2_member", \
|
||||
- TEST!="/tmp/.lvm_scan-%k", \
|
||||
- RUN+="/bin/sh -c '>/tmp/.lvm_scan-%k; /bin/ln -fs /sbin/lvm_scan /initqueue/lvm_scan.sh'"
|
||||
+TEST!="/tmp/.lvm_change-%k", \
|
||||
+ RUN+="/sbin/initqueue --settled --onetime --unique /sbin/lvm_scan"
|
||||
+
|
||||
+ACTION=="add", RUN+="/bin/sh -c '>/tmp/.lvm_scan-%k;'"
|
||||
+ACTION=="change", RUN+="/bin/sh -c '>/tmp/.lvm_change-%k;>/tmp/.lvm_scan-%k;'"
|
||||
|
||||
LABEL="lvm_end"
|
||||
diff --git a/modules.d/90lvm/install b/modules.d/90lvm/install
|
||||
index ad4d2e2..c0952e2 100755
|
||||
--- a/modules.d/90lvm/install
|
||||
+++ b/modules.d/90lvm/install
|
||||
@@ -1,10 +1,7 @@
|
||||
#!/bin/bash
|
||||
inst lvm
|
||||
-if [ -x /lib/udev/vol_id ]; then
|
||||
- inst_rules "$moddir/64-lvm-vol_id.rules" 64-device-mapper.rules
|
||||
-else
|
||||
- inst_rules "$moddir/64-lvm.rules" 64-device-mapper.rules
|
||||
-fi
|
||||
+
|
||||
+inst_rules "$moddir/64-lvm.rules" 64-lvm.rules
|
||||
|
||||
if [[ $hostonly ]]; then
|
||||
[ -f /etc/lvm/lvm.conf ] && inst /etc/lvm/lvm.conf
|
||||
diff --git a/modules.d/90lvm/lvm_scan.sh b/modules.d/90lvm/lvm_scan.sh
|
||||
index a40b677..f606055 100755
|
||||
--- a/modules.d/90lvm/lvm_scan.sh
|
||||
+++ b/modules.d/90lvm/lvm_scan.sh
|
||||
@@ -1,38 +1,35 @@
|
||||
#!/bin/sh
|
||||
|
||||
-if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then
|
||||
- [ -h "$job" ] && rm -f "$job"
|
||||
- # run lvm scan if udev has settled
|
||||
+# run lvm scan if udev has settled
|
||||
|
||||
- VGS=$(getargs rd_LVM_VG=)
|
||||
+. /lib/dracut-lib.sh
|
||||
|
||||
- [ -d /etc/lvm ] || mkdir -p /etc/lvm
|
||||
- # build a list of devices to scan
|
||||
- lvmdevs=$(
|
||||
- for f in /tmp/.lvm_scan-*; do
|
||||
- [ -e "$f" ] || continue
|
||||
- echo -n "${f##/tmp/.lvm_scan-} "
|
||||
- done
|
||||
- )
|
||||
+VGS=$(getargs rd_LVM_VG=)
|
||||
|
||||
- if [ ! -e /etc/lvm/lvm.conf ]; then
|
||||
- {
|
||||
- echo 'devices {';
|
||||
- echo -n ' filter = [ '
|
||||
- for dev in $lvmdevs; do
|
||||
- printf '"a|^/dev/%s$|", ' $dev;
|
||||
- done;
|
||||
- echo '"r/.*/" ]';
|
||||
- echo 'types = [ "blkext", 1024 , "cciss0", 1024 ]'
|
||||
- echo '}';
|
||||
- } > /etc/lvm/lvm.conf
|
||||
- lvmwritten=1
|
||||
- fi
|
||||
- info "Scanning devices $lvmdevs for LVM volume groups $VGS"
|
||||
- lvm vgscan 2>&1 | vinfo
|
||||
- lvm vgchange -ay $VGS 2>&1 | vinfo
|
||||
- [ "$lvmwritten" ] && rm -f /etc/lvm/lvm.conf
|
||||
- unset lvmwritten
|
||||
- udevsettle
|
||||
-fi
|
||||
+[ -d /etc/lvm ] || mkdir -p /etc/lvm
|
||||
+# build a list of devices to scan
|
||||
+lvmdevs=$(
|
||||
+ for f in /tmp/.lvm_scan-*; do
|
||||
+ [ -e "$f" ] || continue
|
||||
+ echo -n "${f##/tmp/.lvm_scan-} "
|
||||
+ done
|
||||
+)
|
||||
|
||||
+if [ ! -e /etc/lvm/lvm.conf ]; then
|
||||
+ {
|
||||
+ echo 'devices {';
|
||||
+ echo -n ' filter = [ '
|
||||
+ for dev in $lvmdevs; do
|
||||
+ printf '"a|^/dev/%s$|", ' $dev;
|
||||
+ done;
|
||||
+ echo '"r/.*/" ]';
|
||||
+ echo 'types = [ "blkext", 1024 , "cciss0", 1024 ]'
|
||||
+ echo '}';
|
||||
+ } > /etc/lvm/lvm.conf
|
||||
+ lvmwritten=1
|
||||
+fi
|
||||
+info "Scanning devices $lvmdevs for LVM volume groups $VGS"
|
||||
+lvm vgscan 2>&1 | vinfo
|
||||
+lvm vgchange -ay $VGS 2>&1 | vinfo
|
||||
+[ "$lvmwritten" ] && rm -f /etc/lvm/lvm.conf
|
||||
+unset lvmwritten
|
||||
diff --git a/modules.d/90mdraid/65-md-incremental-imsm.rules b/modules.d/90mdraid/65-md-incremental-imsm.rules
|
||||
index 5104fc5..0a06988 100644
|
||||
--- a/modules.d/90mdraid/65-md-incremental-imsm.rules
|
||||
+++ b/modules.d/90mdraid/65-md-incremental-imsm.rules
|
||||
@@ -20,12 +20,46 @@ ENV{DEVTYPE}!="partition", \
|
||||
|
||||
RUN+="/sbin/mdadm -I --no-degraded $env{DEVNAME}"
|
||||
|
||||
-RUN+="/bin/sh -c '>/tmp/.mdraid_start-%k; /bin/ln -s /sbin/mdraid_start /initqueue/mdraid_start.sh'"
|
||||
-
|
||||
LABEL="md_inc_end"
|
||||
|
||||
+#
|
||||
+# Handle non-container raid arrays
|
||||
+#
|
||||
+ACTION=="add|change", \
|
||||
+ KERNEL=="md[0-9]*|md/*", \
|
||||
+ ENV{DEVTYPE}!="partition", \
|
||||
+ ENV{MD_LEVEL}!="container", \
|
||||
+ GOTO="do_raidstart"
|
||||
+
|
||||
+GOTO="end_raidstart"
|
||||
+
|
||||
+LABEL="do_raidstart"
|
||||
+
|
||||
+TEST!="/tmp/.mdraid_start-%k", \
|
||||
+ RUN+="/sbin/initqueue --settled --onetime --unique /sbin/mdraid_start"
|
||||
+
|
||||
+ACTION=="change", \
|
||||
+ RUN+="/bin/sh -c '>/tmp/.mdraid_start-%k'"
|
||||
+
|
||||
+LABEL="end_raidstart"
|
||||
+
|
||||
+#
|
||||
+# Handle container raid arrays
|
||||
+#
|
||||
ACTION=="add|change", \
|
||||
+ KERNEL=="md[0-9]*|md/*", \
|
||||
ENV{DEVTYPE}!="partition", \
|
||||
ENV{MD_LEVEL}=="container", \
|
||||
- TEST!="/tmp/.mdcontainer_start-%k", \
|
||||
- RUN+="/bin/sh -c '>/tmp/.mdcontainer_start-%k; initqueue /sbin/mdcontainer_start $env{DEVNAME}'"
|
||||
+ GOTO="do_container"
|
||||
+
|
||||
+GOTO="end_container"
|
||||
+
|
||||
+LABEL="do_container"
|
||||
+
|
||||
+TEST!="/tmp/.mdcontainer_start-%k", \
|
||||
+ RUN+="/sbin/initqueue --settled --onetime /sbin/mdcontainer_start $env{DEVNAME}"
|
||||
+
|
||||
+ACTION=="change", \
|
||||
+ RUN+="/bin/sh -c '>/tmp/.mdcontainer_start-%k'"
|
||||
+
|
||||
+LABEL="end_container"
|
||||
diff --git a/modules.d/90mdraid/mdcontainer_start.sh b/modules.d/90mdraid/mdcontainer_start.sh
|
||||
index 403b62b..4cb282d 100755
|
||||
--- a/modules.d/90mdraid/mdcontainer_start.sh
|
||||
+++ b/modules.d/90mdraid/mdcontainer_start.sh
|
||||
@@ -1,9 +1,6 @@
|
||||
#!/bin/sh
|
||||
. /lib/dracut-lib.sh
|
||||
|
||||
-if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then
|
||||
- # run mdadm if udev has settled
|
||||
- md=$1
|
||||
- # and activate any containers
|
||||
- mdadm -IR $md 2>&1 | vinfo
|
||||
-fi
|
||||
+md=$1
|
||||
+# and activate any containers
|
||||
+mdadm -IR $md 2>&1 | vinfo
|
||||
diff --git a/modules.d/90mdraid/mdraid_start.sh b/modules.d/90mdraid/mdraid_start.sh
|
||||
index 55e7d9c..ee9362c 100755
|
||||
--- a/modules.d/90mdraid/mdraid_start.sh
|
||||
+++ b/modules.d/90mdraid/mdraid_start.sh
|
||||
@@ -1,9 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
-if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then
|
||||
- [ -h "$job" ] && rm -f "$job"
|
||||
- # run mdadm if udev has settled
|
||||
- info "Assembling MD RAID arrays"
|
||||
- mdadm -IRs 2>&1 | vinfo
|
||||
- udevsettle
|
||||
-fi
|
||||
+. /lib/dracut-lib.sh
|
||||
+# run mdadm if udev has settled
|
||||
+info "Assembling MD RAID arrays"
|
||||
+mdadm -IRs 2>&1 | vinfo
|
||||
diff --git a/modules.d/95rootfs-block/block-genrules.sh b/modules.d/95rootfs-block/block-genrules.sh
|
||||
index 10471ea..f12a6b9 100644
|
||||
--- a/modules.d/95rootfs-block/block-genrules.sh
|
||||
+++ b/modules.d/95rootfs-block/block-genrules.sh
|
||||
@@ -8,5 +8,5 @@ if [ "${root%%:*}" = "block" ]; then
|
||||
(
|
||||
printf '[ -e "%s" ] && { ln -s "%s" /dev/root; rm "$job"; }\n' \
|
||||
"${root#block:}" "${root#block:}"
|
||||
- ) >> /initqueue/blocksymlink.sh
|
||||
+ ) >> /initqueue-settled/blocksymlink.sh
|
||||
fi
|
||||
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
|
||||
index a717bb4..9e33cf3 100644
|
||||
--- a/modules.d/99base/dracut-lib.sh
|
||||
+++ b/modules.d/99base/dracut-lib.sh
|
||||
@@ -117,3 +117,10 @@ udevsettle() {
|
||||
udevadm settle --timeout=30
|
||||
fi
|
||||
}
|
||||
+
|
||||
+if [ -e /proc/cmdline ]; then
|
||||
+ if getarg rdinitdebug; then
|
||||
+ set -x
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
diff --git a/modules.d/99base/init b/modules.d/99base/init
|
||||
index d94a3a2..14505ed 100755
|
||||
--- a/modules.d/99base/init
|
||||
+++ b/modules.d/99base/init
|
||||
@@ -138,7 +138,22 @@ while :; do
|
||||
[ -n "$queuetriggered" ] && continue
|
||||
|
||||
if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then
|
||||
- # no more udev jobs
|
||||
+ unset queuetriggered
|
||||
+ for job in /initqueue-settled/*.sh; do
|
||||
+ [ -e "$job" ] || break
|
||||
+
|
||||
+ queuetriggered="1"
|
||||
+
|
||||
+ job=$job . $job
|
||||
+
|
||||
+ # bail out, if we have mounted the root filesystem
|
||||
+ [ -d "$NEWROOT/proc" ] && break 2;
|
||||
+
|
||||
+ # check if root can be mounted
|
||||
+ [ -e /dev/root ] && break 2;
|
||||
+ done
|
||||
+
|
||||
+ # no more udev jobs and queues empty.
|
||||
sleep 0.5
|
||||
i=$(($i+1))
|
||||
[ $i -gt 20 ] \
|
||||
diff --git a/modules.d/99base/initqueue b/modules.d/99base/initqueue
|
||||
index a5c6ef6..b2d4406 100755
|
||||
--- a/modules.d/99base/initqueue
|
||||
+++ b/modules.d/99base/initqueue
|
||||
@@ -1,12 +1,32 @@
|
||||
#!/bin/sh
|
||||
|
||||
-if [ "$1" = "--onetime" ]; then
|
||||
- onetime="yes"
|
||||
- shift
|
||||
+. /lib/dracut-lib.sh
|
||||
+
|
||||
+while [ $# -gt 0 ]; do
|
||||
+ case "$1" in
|
||||
+ --onetime)
|
||||
+ onetime="yes"
|
||||
+ shift;;
|
||||
+ --settled)
|
||||
+ settled="-settled"
|
||||
+ shift;;
|
||||
+ --unique)
|
||||
+ unique="yes"
|
||||
+ shift;;
|
||||
+ *)
|
||||
+ break;;
|
||||
+ esac
|
||||
+done
|
||||
+
|
||||
+if [ -z "$unique" ]; then
|
||||
+ job=$$
|
||||
+else
|
||||
+ job=${1##*/}
|
||||
fi
|
||||
-echo "$@" > /tmp/$$.sh
|
||||
+
|
||||
+echo "$@" > /tmp/${job}.sh
|
||||
if [ -n "$onetime" ]; then
|
||||
- echo '[ -e "$job" ] && rm "$job"' >> /tmp/$$.sh
|
||||
+ echo '[ -e "$job" ] && rm "$job"' >> /tmp/${job}.sh
|
||||
fi
|
||||
-mv /tmp/$$.sh /initqueue/
|
||||
->> /initqueue/work
|
||||
+mv -f /tmp/${job}.sh /initqueue${settled}/
|
||||
+[ -z "$settled" ] && >> /initqueue/work
|
||||
diff --git a/modules.d/99base/install b/modules.d/99base/install
|
||||
index bc2336a..08ca8f0 100755
|
||||
--- a/modules.d/99base/install
|
||||
+++ b/modules.d/99base/install
|
||||
@@ -9,6 +9,7 @@ fi
|
||||
inst "$moddir/init" "/init"
|
||||
inst "$moddir/initqueue" "/sbin/initqueue"
|
||||
mkdir -p ${initdir}/initqueue
|
||||
+mkdir -p ${initdir}/initqueue-settled
|
||||
mkdir -p ${initdir}/tmp
|
||||
# Bail out if switch_root does not exist
|
||||
if which switch_root >/dev/null 2>&1; then
|
||||
--
|
||||
1.6.2.5
|
||||
|
13
dracut.spec
13
dracut.spec
@ -13,7 +13,7 @@
|
||||
|
||||
Name: dracut
|
||||
Version: 001
|
||||
Release: 3%{?rdist}
|
||||
Release: 4%{?rdist}
|
||||
Summary: Initramfs generator using udev
|
||||
Group: System Environment/Base
|
||||
License: GPLv2+
|
||||
@ -23,6 +23,10 @@ Source0: dracut-%{version}%{?dashgittag}.tar.bz2
|
||||
Patch1: 0005-mdraid-add-grep-for-convenience.patch
|
||||
Patch2: 0006--crypt-dmraid-lvm-mdraid-cleanup-with-pre-pivot-30.patch
|
||||
Patch3: 0007-95udev-rules-fixed-c-p-bug-which-did-not-install-61.patch
|
||||
Patch4: 0009-mdraid_start.sh-fixed-raid-activation.patch
|
||||
Patch5: 0010-add-scp-to-debug-module.patch
|
||||
Patch6: 0011-mdraid-cleanup-do-not-stop-mdraid-container.patch
|
||||
Patch7: 0012-added-initqueue-settled-and-refactored-code.patch
|
||||
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
Requires: udev
|
||||
@ -110,6 +114,10 @@ This package contains tools to assemble the local initrd and host configuration.
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
|
||||
%build
|
||||
make
|
||||
@ -186,6 +194,9 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%dir /var/lib/dracut/overlay
|
||||
|
||||
%changelog
|
||||
* Mon Sep 07 2009 Harald Hoyer <harald@redhat.com> 001-4
|
||||
- fixed mdraid for IMSM
|
||||
|
||||
* Mon Sep 07 2009 Harald Hoyer <harald@redhat.com> 001-3
|
||||
- fixed bug, which prevents installing 61-persistent-storage.rules (bug #520109)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user