dracut/0026-Allow-to-add-mount-points-even-not-in-hostonly-mode.patch
2012-01-17 11:19:23 +01:00

116 lines
3.2 KiB
Diff

From cd7ff122a4cea4ba6d03d366293cc44e9550a54f Mon Sep 17 00:00:00 2001
From: Cong Wang <xiyou.wangcong@gmail.com>
Date: Tue, 20 Dec 2011 14:09:56 +0800
Subject: [PATCH] Allow to add mount points even not in hostonly mode
Don't force --mount only working in hostonly mode, let users decide.
With this patch, people can still combine -H --mount '...' if they
want to use it in hostonly mode.
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
---
dracut | 77 +++++++++++++++++++++++++++++++--------------------------------
1 files changed, 38 insertions(+), 39 deletions(-)
diff --git a/dracut b/dracut
index 56c8df3..04dc8ec 100755
--- a/dracut
+++ b/dracut
@@ -525,40 +525,25 @@ trap 'exit 1;' SIGINT
# Need to be able to have non-root users read stuff (rpcbind etc)
chmod 755 "$initdir"
+for line in "${fstab_lines[@]}"; do
+ set -- $line
+ #dev mp fs fsopts
+ dev="$(get_maj_min $1)"
+ push host_devs "${dev:-$1}"
+ push host_fs_types "$dev|$3"
+done
+
+for f in $add_fstab; do
+ [ -e $f ] || continue
+ while read dev rest; do
+ push host_devs $dev
+ done < $f
+done
+
if [[ $hostonly ]]; then
# in hostonly mode, determine all devices, which have to be accessed
# and examine them for filesystem types
- unset host_fs_types
-
- _get_fs_type() (
- [[ $1 ]] || return
- if [[ -b /dev/block/$1 ]] && get_fs_env /dev/block/$1; then
- echo "$1|$ID_FS_TYPE"
- return 1
- fi
- if fstype=$(find_dev_fstype $1); then
- echo "$1|$fstype"
- return 1
- fi
- return 1
- )
-
- for line in "${fstab_lines[@]}"; do
- set -- $line
- #dev mp fs fsopts
- dev="$(get_maj_min $1)"
- push host_devs "${dev:-$1}"
- push host_fs_types "$dev|$3"
- done
-
- for f in $add_fstab; do
- [ -e $f ] || continue
- while read dev rest; do
- push host_devs $dev
- done < $f
- done
-
push host_mp \
"/" \
"/etc" \
@@ -573,17 +558,31 @@ if [[ $hostonly ]]; then
mountpoint "$mp" >/dev/null 2>&1 || continue
push host_devs $(find_block_device "$mp")
done
- for dev in "${host_devs[@]}"; do
- unset fs_type
- for fstype in $(_get_fs_type $dev) \
- $(check_block_and_slaves _get_fs_type $dev); do
- if ! strstr " ${host_fs_types[*]} " " $fstype ";then
- push host_fs_types "$fstype"
- fi
- done
- done
fi
+_get_fs_type() (
+ [[ $1 ]] || return
+ if [[ -b /dev/block/$1 ]] && get_fs_env /dev/block/$1; then
+ echo "$1|$ID_FS_TYPE"
+ return 1
+ fi
+ if fstype=$(find_dev_fstype $1); then
+ echo "$1|$fstype"
+ return 1
+ fi
+ return 1
+)
+
+for dev in "${host_devs[@]}"; do
+ unset fs_type
+ for fstype in $(_get_fs_type $dev) \
+ $(check_block_and_slaves _get_fs_type $dev); do
+ if ! strstr " ${host_fs_types[*]} " " $fstype ";then
+ push host_fs_types "$fstype"
+ fi
+ done
+done
+
export initdir dracutbasedir dracutmodules drivers \
fw_dir drivers_dir debug no_kernel kernel_only \
add_drivers mdadmconf lvmconf filesystems \