The test case generic/361 fails on multiple filesystem
implementations due to two issues:
1. A file is created on a 512 MB volume by truncating it to
1 GB. For this to work, the filesystem implementation must
support sparse files. However, the test case does not check
for sparse file support.
2. A loop device, backed by the 1 GB file, is created, mkfs is
run on it and it is mounted. However, the mount command does
not specify the filesystem type. This doesn't always work
properly, as the kernel may pick the wrong driver if there
are multiple implementations for a particular filesystem,
or not find a driver at all in some cases.
To fix the behavior of the test case, this commit adds a requirement
for sparse file support to the test case, and explicitly specifies
the filesystem type as $FSTYP when mounting the loop device.
Signed-off-by: Ari Sundholm <ari@tuxera.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
_require_scratch
_require_block_device $SCRATCH_DEV
_require_loop
+_require_sparse_files
# create a small filesystem to hold another filesystem image
_scratch_mkfs_sized $((512 * 1024 * 1024)) >>$seqres.full 2>&1
# mount loop device and create a larger file to hit I/O errors on loop device
loop_dev=$(_create_loop_device $fs_img)
_mkfs_dev $loop_dev
-_mount $loop_dev $fs_mnt
+_mount -t $FSTYP $loop_dev $fs_mnt
if [ "$FSTYP" = "xfs" ]; then
# Turn off all XFS metadata IO error retries
dname=$(_short_dev $loop_dev)