add ext2/3/4-specific _check_extN_filesystem function

The _check_generic_filesystem function doesn't force a full filesystem
check, so filesystem inconsistencies after a test wouldn't be noticed.
To fix this, I added an extN specific check filesystem function.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
Theodore Ts'o
2009-08-27 18:17:32 -03:00
committed by Christoph Hellwig
parent ae2c20fd77
commit 8b61ae6352
+52
View File
@@ -865,6 +865,52 @@ _check_generic_filesystem()
return 0
}
# Check an ext2/3/4 filesystem
#
_check_extN_filesystem()
{
device=$1
# If type is set, we're mounted
type=`_fs_type $device`
ok=1
if [ "$type" = "$FSTYP" ]
then
# mounted ...
mountpoint=`_umount_or_remount_ro $device`
fi
e2fsck -nf $device >$tmp.fsck 2>&1
if [ $? -ne 0 ]
then
echo "_check_extN_filesystem: filesystem on $device is inconsistent (see $seq.full)"
echo "_check_extN filesystem: filesystem on $device is inconsistent" >>$here/$seq.full
echo "*** e2fsck output ***" >>$here/$seq.full
cat $tmp.fsck >>$here/$seq.full
echo "*** end e2fsck output" >>$here/$seq.full
ok=0
fi
rm -f $tmp.fsck
if [ $ok -eq 0 ]
then
echo "*** mount output ***" >>$here/$seq.full
_mount >>$here/$seq.full
echo "*** end mount output" >>$here/$seq.full
elif [ "$type" = "$FSTYP" ]
then
# was mounted ...
_mount_or_remount_rw "$MOUNT_OPTIONS" $device $mountpoint
ok=$?
fi
[ $ok -eq 0 ] && exit 1
return 0
}
# run xfs_check and friends on a FS.
_check_xfs_filesystem()
@@ -1033,6 +1079,9 @@ _check_test_fs()
udf)
# do nothing for now
;;
ext2|ext3|ext4)
_check_extN_filesystem $TEST_DEV
;;
*)
_check_generic_filesystem $TEST_DEV
;;
@@ -1059,6 +1108,9 @@ _check_scratch_fs()
nfs*)
# Don't know how to check an NFS filesystem, yet.
;;
ext2|ext3|ext4)
_check_extN_filesystem $SCRATCH_DEV
;;
*)
_check_generic_filesystem $SCRATCH_DEV
;;