[kexec-tools/f16] mkdumprd: generate udev rules to handle device names

Cong Wang wangcong at fedoraproject.org
Mon Aug 1 14:53:34 UTC 2011


commit 386612d259fe5f5686f490203a28129e7b8fde2b
Author: Amerigo Wang <amwang at redhat.com>
Date:   Mon Aug 1 22:53:00 2011 +0800

    mkdumprd: generate udev rules to handle device names

 kdump_dracut_modules/99kdumpbase/block-genrules.sh |   14 ++++++
 kdump_dracut_modules/99kdumpbase/kdump.sh          |   43 +++++++++++++------
 kdump_dracut_modules/99kdumpbase/module-setup.sh   |    2 +-
 kexec-tools.spec                                   |    6 ++-
 sources                                            |    2 +-
 5 files changed, 50 insertions(+), 17 deletions(-)
---
diff --git a/kdump_dracut_modules/99kdumpbase/block-genrules.sh b/kdump_dracut_modules/99kdumpbase/block-genrules.sh
new file mode 100755
index 0000000..986291c
--- /dev/null
+++ b/kdump_dracut_modules/99kdumpbase/block-genrules.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+. /lib/dracut-lib.sh
+
+while read config_opt config_val;
+do
+    case "$config_opt" in
+    ext[234]|xfs|btrfs|minix|raw)
+        udevmatch $config_val >> $UDEVRULESD/99-localfs.rules
+    ;;
+    esac
+done < /etc/kdump.conf
+
+
diff --git a/kdump_dracut_modules/99kdumpbase/kdump.sh b/kdump_dracut_modules/99kdumpbase/kdump.sh
index b50cc2f..f101a05 100755
--- a/kdump_dracut_modules/99kdumpbase/kdump.sh
+++ b/kdump_dracut_modules/99kdumpbase/kdump.sh
@@ -25,13 +25,25 @@ add_dump_code()
     fi
 }
 
+add_to_fstab()
+{
+    local _mp
+    while read dev mp fs opts rest; do
+        if [ "$dev" = "$1" ]; then
+            _mp=$NEWROOT$mp
+            echo "$dev $NEWROOT$mp $fs ${opts},ro $rest"
+            break
+        fi
+    done < "$NEWROOT/etc/fstab" >> /etc/fstab
+    echo "$_mp"
+}
+
 dump_localfs()
 {
-    mount -o remount,rw $NEWROOT/ || return 1
-    [ -d $NEWROOT/mnt ] || mkdir -p $NEWROOT/mnt
-    mount -t $1 $2 $NEWROOT/mnt || return 1
-    mkdir -p $NEWROOT/mnt/$KDUMP_PATH/$DATEDIR
-    $CORE_COLLECTOR /proc/vmcore $NEWROOT/mnt/$KDUMP_PATH/$DATEDIR/vmcore || return 1
+    local _mp=`add_to_fstab $1`
+    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
     return 0
 }
@@ -72,14 +84,17 @@ dump_ssh()
 
 to_dev_name()
 {
-    local _dev=$1
-    local _is_uuid=`echo $1 | grep UUID`
-    local _is_label=`echo $1 | grep LABEL`
-    if [ -n "$_is_uuid" -o -n "$_is_label" ]
-    then
-        _dev=`findfs $1`
-    fi
-    echo $_dev
+    local dev="$1"
+
+    case "$dev" in
+    UUID=*)
+        dev=`blkid -U "${dev#UUID=}"`
+        ;;
+    LABEL=*)
+        dev=`blkid -L "${dev#LABEL=}"`
+        ;;
+    esac
+    echo $dev
 }
 
 read_kdump_conf()
@@ -90,7 +105,7 @@ read_kdump_conf()
         do
 	    case "$config_opt" in
             ext[234]|xfs|btrfs|minix)
-                add_dump_code "dump_localfs $config_opt "$(to_dev_name $config_val)" || do_default_action"
+                add_dump_code "dump_localfs "$(to_dev_name $config_val)" || do_default_action"
                 ;;
             raw)
                 add_dump_code "dump_raw $config_val || do_default_action"
diff --git a/kdump_dracut_modules/99kdumpbase/module-setup.sh b/kdump_dracut_modules/99kdumpbase/module-setup.sh
index 55aec14..cfeab91 100755
--- a/kdump_dracut_modules/99kdumpbase/module-setup.sh
+++ b/kdump_dracut_modules/99kdumpbase/module-setup.sh
@@ -69,9 +69,9 @@ depends() {
 install() {
     inst "/bin/date" "/bin/date"
     inst "/bin/sync" "/bin/sync"
-    inst "/sbin/findfs" "/sbin/findfs"
     inst "/sbin/makedumpfile" "/sbin/makedumpfile"
     inst "/etc/kdump.conf" "/etc/kdump.conf"
     inst_hook pre-pivot 01 "$moddir/kdump.sh"
+    inst_hook pre-udev 40 "$moddir/block-genrules.sh"
 }
 
diff --git a/kexec-tools.spec b/kexec-tools.spec
index f4225c9..68d8b2b 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -1,6 +1,6 @@
 Name: kexec-tools
 Version: 2.0.2
-Release: 18%{?dist}
+Release: 19%{?dist}
 License: GPLv2
 Group: Applications/System
 Summary: The kexec/kdump userspace component.
@@ -168,6 +168,7 @@ make -C kexec-tools-po install DESTDIR=$RPM_BUILD_ROOT
 mkdir -p -m755 $RPM_BUILD_ROOT/etc/kdump-adv-conf
 tar -C $RPM_BUILD_ROOT/etc/kdump-adv-conf -jxvf %{SOURCE100}
 chmod 755 $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/module-setup.sh
+chmod 755 $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/block-genrules.sh
 chmod 755 $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/kdump.sh
 
 
@@ -280,6 +281,9 @@ done
 
 
 %changelog
+* Mon Aug 1 2011 Cong Wang <xiyou.wangcong at gmail.com> - 2.0.2-19
+- Generate udev rules to handle device names.
+
 * Mon Aug 1 2011 Cong Wang <xiyou.wangcong at gmail.com> - 2.0.2-18
 - Fix dump to local filesystem and raw dump.
 
diff --git a/sources b/sources
index 6aefb7c..8038967 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
-354f51df313598f3ee0429c3ab19242c  dracut-files.tbz2
+f318d715bede3872928e705d1a48b94f  dracut-files.tbz2


More information about the scm-commits mailing list