From f34d69cbbcdde9fa973e8c3ddb7fa3e9b17c7305 Mon Sep 17 00:00:00 2001
From: Jaroslav Barton <jbarton@redhat.com>
Date: Fri, 4 Sep 2009 11:09:32 +0200
Subject: [PATCH] add reiserfs specific _check_reiserfs_filesystem function

The _check_generic_filesystem function doesn't start reiserfsck
correctly. Reiserfsck waits for user answer (user must write Yes,
but question is not visible). This specific function runs
reiserfsck with --yes parameter to awoid waiting for answer.
---
 common.rc |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/common.rc b/common.rc
index da5f99e..8b990ba 100644
--- a/common.rc
+++ b/common.rc
@@ -911,6 +911,50 @@ _check_extN_filesystem()
     return 0
 }
 
+_check_reiserfs_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
+	
+	reiserfsck --yes $device >$tmp.fsck 2>&1
+    if [ $? -ne 0 ]
+    then
+        echo "_check_reiserfs_filesystem: filesystem on $device is inconsistent (see $seq.full)"
+
+        echo "_check_reiserfs_filesystem: filesystem on $device is inconsistent" >>$here/$seq.full
+        echo "*** reiserfsck output ***"                          >>$here/$seq.full
+        cat $tmp.fsck                                         >>$here/$seq.full
+        echo "*** end reiserfsck 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()
@@ -1082,6 +1126,9 @@ _check_test_fs()
     ext2|ext3|ext4)
 	_check_extN_filesystem $TEST_DEV
 	;;
+	reiserfs)
+	_check_reiserfs_filesystem $TEST_DEV
+	;;
     *)
 	_check_generic_filesystem $TEST_DEV
 	;;
-- 
1.6.2.5

