mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
2fd273886b
Create a new helper function to discover the minimum log size that will work with the mkfs options provided, then remove all the hardcoded block sizes from various xfs tests. This will be necessary when we turn on reflink or rmap by default and the minimum log size increases. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Tested-by: Yang Xu<xuyang2018.jy@cn.fujitsu.com> Signed-off-by: Eryu Guan <guaneryu@gmail.com>
69 lines
1.6 KiB
Bash
Executable File
69 lines
1.6 KiB
Bash
Executable File
#! /bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
# Copyright (c) 2013 Red Hat, Inc. All Rights Reserved.
|
|
#
|
|
# FS QA Test No. 295
|
|
#
|
|
# Test xfs_logprint w/ multiply-logged inodes & continued transactions
|
|
#
|
|
seq=`basename $0`
|
|
seqres=$RESULT_DIR/$seq
|
|
echo "QA output created by $seq"
|
|
|
|
here=`pwd`
|
|
tmp=/tmp/$$
|
|
status=1 # failure is the default!
|
|
trap "_cleanup; exit \$status" 0 1 2 3 15
|
|
|
|
_cleanup()
|
|
{
|
|
cd /
|
|
rm -f $tmp.*
|
|
}
|
|
|
|
# get standard environment, filters and checks
|
|
. ./common/rc
|
|
. ./common/filter
|
|
. ./common/attr
|
|
|
|
# real QA test starts here
|
|
|
|
# Modify as appropriate.
|
|
_supported_fs xfs
|
|
_supported_os Linux
|
|
_require_scratch
|
|
_require_attrs
|
|
|
|
rm -f $seqres.full
|
|
|
|
logblks=$(_scratch_find_xfs_min_logblocks)
|
|
_scratch_mkfs -l size=${logblks}b >/dev/null 2>&1
|
|
|
|
# Should yield a multiply-logged inode, thanks to xattr
|
|
# Old logprint says this, then coredumps:
|
|
# xlog_print_trans_inode: illegal inode type
|
|
_scratch_mount
|
|
echo hello > $SCRATCH_MNT/hello; setfattr -n user.name -v value $SCRATCH_MNT/hello
|
|
_scratch_unmount
|
|
_scratch_xfs_logprint 2>&1 >> $seqres.full
|
|
|
|
# Now go for a continued transaction
|
|
# The trick here is to get a transaction which is exactly the size of a
|
|
# xfs_inode_log_format_32_t or xfs_inode_log_format_64_t
|
|
# Prior to the bugfix, this was parsed like an inode due to the size
|
|
# match, not as a continued transaction. If that happens we'll see:
|
|
# xfs_logprint: unknown log operation type (494e)
|
|
|
|
_scratch_mkfs -l size=${logblks}b >/dev/null 2>&1
|
|
_scratch_mount
|
|
for I in `seq 0 8192`; do
|
|
echo a >> $SCRATCH_MNT/cat
|
|
touch $SCRATCH_MNT/tmp$I
|
|
done
|
|
_scratch_unmount
|
|
_scratch_xfs_logprint 2>&1 >> $seqres.full
|
|
|
|
# success, all done
|
|
status=0
|
|
exit
|