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
>
>  
>

Reply via email to