Project

General

Profile

Bug #6340 » fsck_test.diff

Renato Botelho, 05/10/2016 02:46 PM

View differences:

src/etc/rc
54 54

  
55 55
if [ -e /root/force_fsck ]; then
56 56
	echo "Forcing filesystem(s) check..."
57
	/sbin/fsck -y -F -t ufs
57
	/sbin/fsck -y
58 58
fi
59 59

  
60 60
if [ "${PLATFORM}" != "cdrom" ]; then
......
77 77

  
78 78
	if [ ${FSCK_ACTION_NEEDED} = 1 ]; then
79 79
		echo "WARNING: Trying to recover filesystem from inconsistency..."
80
		/sbin/fsck -yF
80
		ntries=0
81
		fsck_rc=1
82
		until [ $ntries -ge 3 -o $fsck_rc -eq 0 ]; do
83
			/sbin/fsck -y
84
			fsck_rc=$?
85
			ntries=$((ntries+1))
86
			echo "DEBUG: Run #${ntries} - rc = ${fsck_rc}"
87
			sleep 1
88

  
89
			# Sometimes first call returns 0 but filesystem is still broken
90
			# Run fsck in preen mode again just to be sure
91
			/sbin/fsck -p -F
92
			fsck_rc=$?
93
			echo "DEBUG: (-p) #${ntries} - rc = ${fsck_rc}"
94
			sleep 1
95
		done
96

  
97
		if [ $fsck_rc -ne 0 ]; then
98
			echo "Automatic filesystem recovery failed. Starting recovery shell!"
99
			tcsh
100
			reboot
101
		fi
81 102
	fi
82 103

  
83 104
	/sbin/mount -a 2>/dev/null
84
	mount_rc=$?
85
	attempts=0
86
	while [ ${mount_rc} -ne 0 -a ${attempts} -lt 3 ]; do
87
		/sbin/fsck -yF
88
		/sbin/mount -a 2>/dev/null
89
		mount_rc=$?
90
		attempts=$((attempts+1))
91
	done
105

  
106
	if [ $? -ne 0 ]; then
107
		echo "Filesystems could not be mounted. Starting recovery shell!"
108
		tcsh
109
		reboot
110
	fi
92 111

  
93 112
	if [ "${PLATFORM}" = "nanobsd" ]; then
94 113
		# XXX This script does need all filesystems rw!!!!
(1-1/2)