From: Harald Hoyer Date: Thu, 31 May 2012 10:57:23 +0000 (+0200) Subject: add filesystem options to fsck_single() X-Git-Tag: 019~19 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=840d8e4733067d71e550b86d57ae11737a47f499;p=platform%2Fupstream%2Fdracut.git add filesystem options to fsck_single() if we have e.g. special btrfs options for "/" and "/usr", we want to use those for the test mount to determine if the filesystem is corrupted. --- diff --git a/modules.d/95fstab-sys/mount-sys.sh b/modules.d/95fstab-sys/mount-sys.sh index 895eb58..a1e5ab1 100755 --- a/modules.d/95fstab-sys/mount-sys.sh +++ b/modules.d/95fstab-sys/mount-sys.sh @@ -12,7 +12,7 @@ fstab_mount() { while read _dev _mp _fs _opts _dump _pass _rest; do [ -z "${_dev%%#*}" ] && continue # Skip comment lines if [ "$_pass" -gt 0 ] && ! strstr "$_opts" _netdev; then - fsck_single "$_dev" "$_fs" + fsck_single "$_dev" "$_fs" "$_opts" fi _fs=$(det_fs "$_dev" "$_fs") info "Mounting $_dev" diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh index aef99ae..2cae526 100755 --- a/modules.d/95rootfs-block/mount-root.sh +++ b/modules.d/95rootfs-block/mount-root.sh @@ -105,7 +105,7 @@ mount_root() { ran_fsck=0 if [ -z "$fastboot" -a "$READONLY" != "yes" ] && ! strstr "${rflags},${rootopts}" _netdev; then umount "$NEWROOT" - fsck_single "${root#block:}" "$rootfs" "$fsckoptions" + fsck_single "${root#block:}" "$rootfs" "$rflags" "$fsckoptions" _ret=$? [ $_ret -ne 255 ] && echo $_ret >/run/initramfs/root-fsck ran_fsck=1 diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh index 39f75b9..92638d1 100755 --- a/modules.d/98usrmount/mount-usr.sh +++ b/modules.d/98usrmount/mount-usr.sh @@ -9,6 +9,7 @@ fsck_usr() { local _dev=$1 local _fs=$2 + local _fsopts=$3 local _fsckoptions if [ -f "$NEWROOT"/fsckoptions ]; then @@ -31,7 +32,7 @@ fsck_usr() _fsckoptions="$AUTOFSCK_OPT $_fsckoptions" fi - fsck_single "$_dev" "$_fs" "$_fsckoptions" + fsck_single "$_dev" "$_fs" "$_fsopts" "$_fsckoptions" } mount_usr() @@ -60,7 +61,7 @@ mount_usr() if [ "x$_usr_found" != "x" ]; then # we have to mount /usr if [ "0" != "${_passno:-0}" ]; then - fsck_usr "$_dev" "$_fs" + fsck_usr "$_dev" "$_fs" "$_opts" else : fi diff --git a/modules.d/99base/mount-hook.sh b/modules.d/99base/mount-hook.sh index 99b17dd..dcf1415 100755 --- a/modules.d/99base/mount-hook.sh +++ b/modules.d/99base/mount-hook.sh @@ -113,7 +113,7 @@ mount_root() { # printf '%s %s %s %s 1 1 \n' "$esc_root" "$NEWROOT" "$rootfs" "$rflags" >/etc/fstab if [ -z "$fastboot" -a "$READONLY" != "yes" ] && ! strstr "${rflags},${rootopts}" _netdev; then - fsck_single "${root#block:}" "$rootfs" "$fsckoptions" + fsck_single "${root#block:}" "$rootfs" "$rflags" "$fsckoptions" _ret=$? [ $_ret -ne 255 ] && echo $_ret >/run/initramfs/root-fsck fi diff --git a/modules.d/99fs-lib/fs-lib.sh b/modules.d/99fs-lib/fs-lib.sh index f9dbbf9..75bee92 100755 --- a/modules.d/99fs-lib/fs-lib.sh +++ b/modules.d/99fs-lib/fs-lib.sh @@ -89,7 +89,7 @@ fsck_drv_xfs() { mkdir -p /tmp/.xfs info "trying to mount $_dev" - if mount -t xfs "$_dev" "/tmp/.xfs" >/dev/null 2>&1; then + if mount -t xfs ${_fsopts+-o $_fsopts} "$_dev" "/tmp/.xfs" >/dev/null 2>&1; then _ret=0 info "xfs: $_dev is clean" umount "$_dev" >/dev/null 2>&1 @@ -119,7 +119,7 @@ fsck_drv_btrfs() { mkdir -p /tmp/.btrfs info "trying to mount $_dev" - if mount -t btrfs "$_dev" "/tmp/.btrfs" >/dev/null 2>&1; then + if mount -t btrfs ${_fsopts+-o $_fsopts} "$_dev" "/tmp/.btrfs" >/dev/null 2>&1; then _ret=0 info "btrfs: $_dev is clean" umount "$_dev" >/dev/null 2>&1 @@ -177,7 +177,7 @@ fsck_drv_std() { # checks single filesystem, relying on specific "driver"; we don't rely on # automatic checking based on fstab, so empty one is passed; -# takes 3 arguments - device, filesystem, additional fsck options; +# takes 4 arguments - device, filesystem, filesystem options, additional fsck options; # first 2 arguments are mandatory (fs may be auto or "") # returns 255 if filesystem wasn't checked at all (e.g. due to lack of # necessary tools or insufficient options) @@ -185,7 +185,8 @@ fsck_single() { local FSTAB_FILE=/etc/fstab.empty local _dev="$1" local _fs="${2:-auto}" - local _fop="$3" + local _fsopts="$3" + local _fop="$4" local _drv [ $# -lt 2 ] && return 255