mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
f736b1c257
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>
91 lines
1.9 KiB
Bash
Executable File
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
|