From cc82c3288dd551a0e34ed827d8b3523ba2bdf07f Mon Sep 17 00:00:00 2001 From: Renato Botelho Date: Thu, 12 Jan 2017 11:37:54 -0200 Subject: Ticket #6340: - Stop misusing fsck -F parameter, it's supposed to be used when you plan to run background fsck after filesystems are mounted, what is not the case on pfSense - Increase attempts to mount all filesystems as read-write to 10 - If we cannot mount filesystems as read-write, start a recovery shell and after it finishes, reboot system --- src/etc/pfSense-rc | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/etc/pfSense-rc') diff --git a/src/etc/pfSense-rc b/src/etc/pfSense-rc index 2bc0ab8..83e1518 100755 --- a/src/etc/pfSense-rc +++ b/src/etc/pfSense-rc @@ -64,7 +64,7 @@ fsck_forced_iterations=`/bin/kenv -q pfsense.fsck.force` if [ ! -z "${fsck_forced_iterations}" ]; then echo "Forcing filesystem check (${fsck_forced_iterations} times)..." while [ ${fsck_forced_iterations} -gt 0 ]; do - /sbin/fsck -y -F -t ufs + /sbin/fsck -y -t ufs fsck_forced_iterations=$((fsck_forced_iterations - 1)) done fi @@ -74,7 +74,7 @@ if [ -e /root/force_growfs ]; then fi FSCK_ACTION_NEEDED=0 -/sbin/fsck -p -F +/sbin/fsck -p case $? in 0) echo "Filesystems are clean, continuing..." @@ -92,19 +92,25 @@ esac if [ ${FSCK_ACTION_NEEDED} = 1 ]; then echo "WARNING: Trying to recover filesystem from inconsistency..." - /sbin/fsck -yF + /sbin/fsck -y -t ufs fi /sbin/mount -a 2>/dev/null mount_rc=$? attempts=0 -while [ ${mount_rc} -ne 0 -a ${attempts} -lt 3 ]; do - /sbin/fsck -yF +while [ ${mount_rc} -ne 0 -a ${attempts} -lt 10 ]; do + /sbin/fsck -y -t ufs /sbin/mount -a 2>/dev/null mount_rc=$? attempts=$((attempts+1)) done +if [ ${mount_rc} -ne 0 ]; then + echo "ERROR: Impossible to mount filesystem, use interactive shell to attempt to recover it" + /bin/sh + /sbin/reboot +fi + # Handle ZFS read-only case /sbin/kldstat -qm zfs if [ $? -eq 0 ]; then -- cgit v1.1