Files
apfstests/tests/ext4/039
T
Theodore Ts'o f736b1c257 shared,ext4: move ext4-specific tests out of shared/
The tests shared/{001,003,004,272} test behaviour around the ext4's
journal.  As such, they are pointless to run on ext2, and ext3 no
longer is in kernels newer than 4.3.  (And most enterprise
distributions have been using ext4 to support the ext3 file system;
that capability has been around since 2.6.33.)  So we can move these
tests out of shared and into the ext4 class of tests:

	shared/001 --> ext4/036
	shared/003 --> ext4/037
	shared/004 --> ext4/038
	shared/272 --> ext4/039

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
2019-07-05 15:24:25 +08:00

91 lines
1.9 KiB
Bash
Executable File

#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved.
#
# FSQA Test No. ext4/039
#
# Test data journaling flag switch for a single file
#
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
# ext3 and ext4 don't support direct IO in journalling mode
write_opt_list="iflag=noatime conv=notrunc conv=fsync"
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
_workout()
{
echo "Switch data journalling mode. Silence is golden."
chattr_opt_list="+j -j +jS -j"
idx=0
#
for write_opt in $write_opt_list
do
idx=$((idx + 1))
for chattr_opt in $chattr_opt_list
do
echo "OP write_opt: $write_opt 4M, \
chattr_opt: $chattr_opt" >>$seqres.full
dd if=/dev/zero of=$SCRATCH_MNT/file.$idx \
bs=1M count=4 $write_opt \
>> $seqres.full 2>&1 || exit
$CHATTR_PROG $chattr_opt $SCRATCH_MNT/file.$idx >> $seqres.full \
|| exit
done
done
sync
# Same as previous test, but for one file,
# and with ENOSPC triggering
for write_opt in $write_opt_list
do
idx=$((idx + 1))
for chattr_opt in $chattr_opt_list
do
echo "OP write_opt: $write_opt ENOSPC, \
chattr_opt: $chattr_opt" >>$seqres.full
dd if=/dev/zero of=$SCRATCH_MNT/file.$idx \
bs=1M $write_opt >> $seqres.full 2>&1
$CHATTR_PROG $chattr_opt $SCRATCH_MNT/file.$idx \
>> $seqres.full || exit
done
sync
unlink $SCRATCH_MNT/file.$idx
done
}
# real QA test starts here
_supported_fs ext3 ext4
_supported_os Linux
_require_scratch
_exclude_scratch_mount_option dax
rm -f $seqres.full
_scratch_mkfs_sized $((64 * 1024 * 1024)) >> $seqres.full 2>&1
_scratch_mount
if ! _workout; then
echo "workout failed"
_scratch_unmount
status=1
exit
fi
if ! _scratch_unmount; then
echo "failed to umount"
status=1
exit
fi
echo "Check filesystem"
status=0
exit