Thanks much for this test script, Vitaly, please give it a try and tell me how it goes.
Hans Pavel Machek wrote: >Hi! > > > >>V3 is obsoleted by V4 in every way. V3 is old code that should be >>marked as deprecated as soon as V4 has passed mass testing. V4 is far >>superior in its coding style also. Having V3 in and V4 out is at this >>point just stupid. >> >> > >Really? Last time I checked, even V3's fsck was not too great. [In >fact I never could make it run stable enough to even _test_ it >properly]. > >Do you have working fsck for V4? Until then, you should not claim that >users should switch. Journalling does not help you, if you have >unexpected kernel problem or hardware trouble, fsck _is_ mandatory. > >Can V4 survive few hours of test below? > Pavel > >#!/bin/bash ># ># fscktest ># ># Usage: ># Make sure output is logged somewhere ># First, run fscktest -p as root ># Then you can run fscktest as normal user... ># > >prepare() { > SIZE=100000 > echo "Creating file..." > cat /dev/zero | head -c $[$SIZE*1024] > test > echo "Making filesystem..." > mkfs.$FS test > echo "Mounting..." > mount test -o loop /mnt || exit "Cant mount" > echo "Copying files..." > cp -a /bin /mnt > cp -a /usr/bin /mnt > cp -a /usr/src/linux /mnt > echo "Syncing..." > sync > echo "Unmounting..." > umount /mnt > echo "Moving..." > mv test fsck.okay > echo "All done." >} > >FS=ext2 >if [ .$1 == .-p ]; then > prepare > exit > fi >RUN=0 >while true; do > RUN=$[$RUN+1] > echo "Run #$RUN" > echo Preparing... > cat fsck.okay > fsck.damaged > echo Damaging... > dd if=/dev/urandom of=fsck.damaged count=10240 seek=7 conv=notrunc > cp fsck.damaged fsck.test > echo First check... > fsck.$FS -fy fsck.damaged > RESULT=$? > if [ $RESULT != 1 -a $RESULT != 2 -a $RESULT != 0 ]; then > echo "Fsck failed in bad way (result = $RESULT)" > exit > fi > echo Second check... > fsck.$FS -fy fsck.damaged > RESULT=$? > if [ $RESULT != 0 ]; then > echo "Fsck lied about its success (result = $RESULT)" > exit > fi > done > > >