72 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| #!/sbin/runscript
 | |
| # Copyright 2007-2008 Roy Marples
 | |
| # All rights reserved
 | |
| 
 | |
| description="Check filesystems according to /etc/fstab for errors and \
 | |
| optionally repair them."
 | |
| 
 | |
| depend() {
 | |
| 	need checkroot
 | |
| 	after modules
 | |
| 	keywords notimeout
 | |
| }
 | |
| 
 | |
| do_checkfs() {
 | |
| 	local retval=0 mode="-p" opts= parts=
 | |
| 
 | |
| 	ebegin "Checking all filesystems"
 | |
| 
 | |
| 	if [ "${RC_UNAME}" = "Linux" ]; then
 | |
| 		opts="-A -C0 -R -T"
 | |
| 	else
 | |
| 		parts="$(fstabinfo --passno ">1")"
 | |
| 		if [ -z "${parts}" ]; then
 | |
| 			eend 0
 | |
| 			return 0
 | |
| 		fi
 | |
| 	fi
 | |
| 
 | |
| 	fsck ${opts} ${mode} ${parts}
 | |
| 	retval=$?
 | |
| 	
 | |
| 	if [ ${retval} -eq 0 ]; then
 | |
| 		eend 0
 | |
| 	elif [ ${retval} -eq 1 ]; then
 | |
| 		ewend 1 "Filesystem errors corrected."
 | |
| 		retval=0
 | |
| 	elif [ ${retval} -eq 2 ]; then
 | |
| 		ewend 1 "System should be rebooted"
 | |
| 	elif [ ${retval} -eq 8 ]; then
 | |
| 		ewend 1 "Operational error, continuing"
 | |
| 		retval=0
 | |
| 	else
 | |
| 		if yesno ${rc_force_auto:-${RC_FORCE_AUTO}}; then
 | |
| 			eend 2 "Fsck could not correct all errors, rerunning"
 | |
| 			fsck ${opts} -y ${parts}
 | |
| 			retval=$?
 | |
| 			eend ${retval}
 | |
| 		fi
 | |
| 
 | |
| 		if [ ${retval} -gt 3 ]; then
 | |
| 			eend 2 "Fsck could not correct all errors, manual repair needed"
 | |
| 			exec rc-abort || exit 1
 | |
| 		fi
 | |
| 	fi
 | |
| 
 | |
| 	return ${retval}
 | |
| }
 | |
| 
 | |
| start() {
 | |
| 	do_checkfs
 | |
| }
 | |
| 
 | |
| stop() {
 | |
| 	# fsck on shutdown if we need to
 | |
| 	if yesno "${fsck_shutdown:-${FSCK_SHUTDOWN}}"; then
 | |
| 		do_checkfs
 | |
| 	fi
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| # vim: set ts=4 :
 |