[arch-projects] [PATCH 1/4] fsck: move FORCEFSCK/FASTBOOT logic to fsck_all

Lukas Fleischer archlinux at cryptocrack.de
Sat Mar 17 13:01:09 EDT 2012


On Sat, Mar 17, 2012 at 11:44:27AM +0100, Tom Gundersen wrote:
> Avoid global variables, and make things clearer.
> 
> Signed-off-by: Tom Gundersen <teg at jklm.no>
> ---
>  functions  |    6 ++++++
>  rc.sysinit |   29 ++++++++++++-----------------
>  2 files changed, 18 insertions(+), 17 deletions(-)
> 
> diff --git a/functions b/functions
> index 0b7fd8d..747e42d 100644
> --- a/functions
> +++ b/functions
> @@ -428,6 +428,12 @@ NETFS="nfs,nfs4,smbfs,cifs,codafs,ncpfs,shfs,fuse,fuseblk,glusterfs,davfs,fuse.g
>  
>  # Check local filesystems
>  fsck_all() {
> +	[[ -f /forcefsck ]] || in_array forcefsck $(< /proc/cmdline) && FORCEFSCK="-f"

If you're trying to make things clearer, I'd probably convert this one
into an if statement as well. The use of "||" and "&&" might be a bit
confusing if you don't have a closer look here.

> +
> +	if [[ ! -n $FORCEFSCK ]] && { [[ -f /fastboot ]] || in_array fastboot $(< /proc/cmdline); }; then
> +		return

No return value? :) We use the return value of fsck_all() later so it
might be worthwhile to explicitly return 0/1 here.

Note that moving these checks into fsck_all() will also result in the
"Checking Filesystems" being displayed even if the fastboot option is
used (just saying, even though you were probably aware of that when
writing this patch).

> +	fi
> +
>  	if [[ -e /run/initramfs/root-fsck ]]; then
>  		IGNORE_MOUNTED="-M"
>  	fi
> diff --git a/rc.sysinit b/rc.sysinit
> index 8fa4270..0876d05 100755
> --- a/rc.sysinit
> +++ b/rc.sysinit
> @@ -176,24 +176,19 @@ if [[ -f /etc/crypttab && $CS ]] && grep -q ^[^#] /etc/crypttab; then
>  fi
>  
>  # Check filesystems
> -[[ -f /forcefsck ]] || in_array forcefsck $(< /proc/cmdline) && FORCEFSCK="-f"
> -declare -r FORCEFSCK
> -
> -if [[ -n $FORCEFSCK ]] || { [[ ! -f /fastboot ]] && ! in_array fastboot $(< /proc/cmdline); }; then
> -	run_hook sysinit_prefsck
> -	if [[ -x $(type -P fsck) ]]; then
> -		stat_busy "Checking Filesystems"
> -			fsck_all >|"${FSCK_OUT:-/dev/stdout}" 2>|"${FSCK_ERR:-/dev/stdout}"
> -		declare -r fsckret=$?
> -		(( fsckret <= 1 )) && stat_done || stat_fail
> -	else
> -		declare -r fsckret=0
> -	fi
> -	run_hook sysinit_postfsck
> -
> -	# Single-user login and/or automatic reboot if needed
> -	fsck_reboot $fsckret
> +run_hook sysinit_prefsck
> +if [[ -x $(type -P fsck) ]]; then
> +	stat_busy "Checking Filesystems"
> +		fsck_all >|"${FSCK_OUT:-/dev/stdout}" 2>|"${FSCK_ERR:-/dev/stdout}"
> +	declare -r fsckret=$?
> +	(( fsckret <= 1 )) && stat_done || stat_fail
> +else
> +	declare -r fsckret=0
>  fi
> +run_hook sysinit_postfsck
> +
> +# Single-user login and/or automatic reboot if needed
> +fsck_reboot $fsckret
>  
>  status "Remounting Root" \
>  	mount -o remount /
> -- 
> 1.7.9.4


More information about the arch-projects mailing list