From 9ea38012147a8ec9894a61c23f0d68405f442e70 Mon Sep 17 00:00:00 2001 From: Amerigo Wang Date: Tue, 2 Aug 2011 14:00:50 +0800 Subject: [PATCH] mkdumprd: handle lvm in pre-pivot hook --- kdump_dracut_modules/99kdumpbase/kdump.sh | 4 +-- .../99kdumpbase/module-setup.sh | 26 +++++++++++++------ kexec-tools.spec | 5 +++- sources | 2 +- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/kdump_dracut_modules/99kdumpbase/kdump.sh b/kdump_dracut_modules/99kdumpbase/kdump.sh index 75391da..ba2337c 100755 --- a/kdump_dracut_modules/99kdumpbase/kdump.sh +++ b/kdump_dracut_modules/99kdumpbase/kdump.sh @@ -31,7 +31,7 @@ add_to_fstab() while read dev mp fs opts rest; do if [ "$dev" = "$1" ]; then _mp=$NEWROOT$mp - echo "$dev $NEWROOT$mp $fs ${opts},ro $rest" + echo "$dev $NEWROOT$mp $fs ${opts},rw $rest" break fi done < "$NEWROOT/etc/fstab" >> /etc/fstab @@ -60,7 +60,7 @@ dump_localfs() mount $_mp || return 1 mkdir -p $_mp/$KDUMP_PATH/$DATEDIR $CORE_COLLECTOR /proc/vmcore $_mp/$KDUMP_PATH/$DATEDIR/vmcore || return 1 - umount /mnt || return 1 + umount $_mp || return 1 return 0 } diff --git a/kdump_dracut_modules/99kdumpbase/module-setup.sh b/kdump_dracut_modules/99kdumpbase/module-setup.sh index 4836edf..eb4fc52 100755 --- a/kdump_dracut_modules/99kdumpbase/module-setup.sh +++ b/kdump_dracut_modules/99kdumpbase/module-setup.sh @@ -52,8 +52,7 @@ pull_dracut_modules() { unset MAJOR MINOR } -to_udev_name() -{ +to_udev_name() { local dev="$1" case "$dev" in @@ -67,6 +66,15 @@ to_udev_name() echo ${dev#/dev/} } +add_lvm_code() { + local dev="/dev/$(to_udev_name $1)" + local lv + printf '#!/bin/sh\n' > $moddir/kdump-prepare.sh + printf "lvm lvchange -ay --sysinit ">> $moddir/kdump-prepare.sh + lv=$(lvm lvdisplay $dev | awk '/LV Name/ {print $3}') + echo ${lv#/dev/} >> $moddir/kdump-prepare.sh +} + udevmatch() { case "$1" in UUID=????????-????-????-????-????????????|LABEL=*) @@ -80,9 +88,8 @@ udevmatch() { printf ', SYMLINK+="'$(to_udev_name $1)'"\n' } -add_udev_rules() -{ - udevmatch $1 >> $moddir/99-localfs.rules +add_udev_rules() { + udevmatch $1 >> $moddir/90-localfs.rules } depends() { @@ -100,12 +107,14 @@ depends() { } install() { - echo -n "" > "$moddir/99-localfs.rules" + echo -n "" > $moddir/90-localfs.rules + chmod +x $moddir/kdump-prepare.sh while read config_opt config_val; do case "$config_opt" in ext[234]|xfs|btrfs|minix|raw) add_udev_rules $config_val + add_lvm_code $config_val ;; esac done < /etc/kdump.conf @@ -114,7 +123,8 @@ install() { inst "/bin/sync" "/bin/sync" inst "/sbin/makedumpfile" "/sbin/makedumpfile" inst "/etc/kdump.conf" "/etc/kdump.conf" - inst_hook pre-pivot 01 "$moddir/kdump.sh" - inst_rules "$moddir/99-localfs.rules" + inst_hook pre-pivot 01 "$moddir/kdump-prepare.sh" + inst_hook pre-pivot 02 "$moddir/kdump.sh" + inst_rules "$moddir/90-localfs.rules" } diff --git a/kexec-tools.spec b/kexec-tools.spec index 0985569..058d198 100644 --- a/kexec-tools.spec +++ b/kexec-tools.spec @@ -1,6 +1,6 @@ Name: kexec-tools Version: 2.0.2 -Release: 21%{?dist} +Release: 22%{?dist} License: GPLv2 Group: Applications/System Summary: The kexec/kdump userspace component. @@ -280,6 +280,9 @@ done %changelog +* Tue Aug 2 2011 Cong Wang - 2.0.2-22 +- Handle lvm in pre-pivot hook. + * Tue Aug 2 2011 Cong Wang - 2.0.2-21 - Fix udev rules in module-setup.sh diff --git a/sources b/sources index f4684dd..c5994ed 100644 --- a/sources +++ b/sources @@ -2,4 +2,4 @@ d9f2ecd3c3307905f24130a25816e6cc kexec-tools-2.0.0.tar.bz2 3e802d638dce0080b910f15908c04a24 kexec-tools-po.tar.gz e3a813bd6d7dace903a05c1296e20d57 makedumpfile-1.3.5.tar.gz 8e359dd03731b93a2082bd37cc2a4a4c kexec-tools-2.0.2.tar.bz2 -e781db40f39c3f27c6003d9c5794b862 dracut-files.tbz2 +ed5b216591c1913eeac70449ca810cf7 dracut-files.tbz2