xfs: test readlink/readdir with malformed inode mode

In addition to testing xfs_repair on inodes with malformed mode,
and fstat of those inodes on a mounted fs, try to also list content
of mock directory and readlink of mock symlink.

Readdir of mock directory triggers XFS assertion on kernel 4.9 with
XFS_DEBUG=y

XFS: Assertion failed:
     rval == 0 || args->dp->i_d.di_size == args->geo->blksize,
file: /home/amir/build/src/linux/fs/xfs/libxfs/xfs_dir2.c, line: 634

A fix patch, as suggested by Darrick, changes this ASSERT() to
return -EFSCORRUPTED ("xfs: sanity check directory inode di_size").

Merging this test should be deferred to after fix patch is merged.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
This commit is contained in:
Amir Goldstein
2017-01-11 08:41:12 +02:00
committed by Eryu Guan
parent 707a5890ca
commit 9b80c46ed0
+9
View File
@@ -133,6 +133,15 @@ for dt in $dtypes; do
cat $tmp.stat.err
else
echo "stat: '$testdir/$file' is a $ftype"
# Verify that readlink of a file posing as a symlink
# and ls of a file posing as a directory does not blow up.
# NOTE that ls DOES ASSERT with kernel 4.9 and XFS_DEBUG=y
# on malformed directory
if [ -d $testdir/$file ]; then
ls $testdir/$file &> /dev/null
elif [ -h $testdir/$file ]; then
readlink $testdir/$file &> /dev/null
fi
fi | _filter_scratch
done
_scratch_unmount