]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
tests: modify f_large_dir test to excercise indexed dir handling
authorJan Kara <jack@suse.cz>
Thu, 13 Feb 2020 10:16:00 +0000 (11:16 +0100)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 15 Mar 2020 16:33:23 +0000 (12:33 -0400)
Modify f_large_dir test to create indexed directory and create entries
in it. That way the new code in ext2fs_link() for addition of entries
into indexed directories gets executed including various special cases
when growing htree.

Reviewed-by: Andreas Dilger <adilger@dilger.ca>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
tests/f_large_dir/expect
tests/f_large_dir/script

index 8f7d99dc1ee731bb244dff39571bf74b4fafe86a..028234cc6bb59186577769ec36ced79b21d8a321 100644 (file)
@@ -6,6 +6,16 @@ Allocating group tables:      \b\b\b\b\bdone
 Writing inode tables:      \b\b\b\b\bdone                            
 Writing superblocks and filesystem accounting information:      \b\b\b\b\bdone
 
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 3A: Optimizing directories
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+
+test.img: ***** FILE SYSTEM WAS MODIFIED *****
+test.img: 17/65072 files (5.9% non-contiguous), 9732/108341 blocks
+Exit status is 0
 Pass 1: Checking inodes, blocks, and sizes
 Pass 2: Checking directory structure
 Pass 3: Checking directory connectivity
index 9af042ca6ca81912aa37ee1237400b0df0878385..e3235836f99792baacd6aef165b5f6e0ce886caf 100644 (file)
@@ -26,17 +26,33 @@ $MKE2FS -b 1024 -O large_dir,uninit_bg -N $((ENTRIES + 50)) \
 RC=$?
 if [ $RC -eq 0 ]; then
 {
-       START=$SECONDS
+       # First some initial fs setup to create indexed dir
        echo "mkdir /foo"
        echo "cd /foo"
        touch $TMPFILE.tmp
        echo "write $TMPFILE.tmp foofile"
        i=0
-       last=0
+       while test $i -lt $DIRENT_PER_LEAF ; do
+               printf "mkdir d%0254u\n" $i
+               i=$((i + 1));
+       done
+       echo "expand ./"
+       printf "mkdir d%0254u\n" $i
+} | $DEBUGFS -w $TMPFILE > /dev/null 2>> $OUT.new
+       RC=$?
+       # e2fsck should optimize the dir to become indexed
+       $E2FSCK -yfD $TMPFILE >> $OUT.new 2>&1
+       status=$?
+       echo Exit status is $status >> $OUT.new
+fi
+
+if [ $RC -eq 0 ]; then
+{
+       START=$SECONDS
+       i=$(($DIRENT_PER_LEAF+1))
+       last=$i
+       echo "cd /foo"
        while test $i -lt $ENTRIES ; do
-           if test $((i % DIRENT_PER_LEAF)) -eq 0; then
-               echo "expand ./"
-           fi
            ELAPSED=$((SECONDS - START))
            if test $((i % 5000)) -eq 0 -a $ELAPSED -gt 10; then
                RATE=$(((i - last) / ELAPSED))
@@ -54,6 +70,7 @@ if [ $RC -eq 0 ]; then
 } | $DEBUGFS -w $TMPFILE > /dev/null 2>> $OUT.new
        RC=$?
 fi
+
 if [ $RC -eq 0 ]; then
        $E2FSCK -yfD $TMPFILE >> $OUT.new 2>&1
        status=$?