mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
Merge branch 'master' of git://git.kernel.org/pub/scm/fs/xfs/xfstests-dev
This commit is contained in:
@@ -65,6 +65,15 @@ _init()
|
||||
$here/src/devzero -b 2048 -n 50 -v 198 $SCRATCH_DEV
|
||||
echo "*** mkfs"
|
||||
force_opts="-dsize=50m -lsize=$log_size"
|
||||
#
|
||||
# Do not discard blocks as we check for patterns in free space.
|
||||
#
|
||||
# First, make sure that mkfs supports '-K' option by using its
|
||||
# dry run (-N option) and then add it to the force_opts.
|
||||
#
|
||||
if _scratch_mkfs_xfs -N -K $force_opts >/dev/null 2>&1; then
|
||||
force_opts="-K $force_opts"
|
||||
fi
|
||||
echo mkfs_xfs $force_opts $SCRATCH_DEV >>$seq.full
|
||||
_scratch_mkfs_xfs $force_opts >$tmp.mkfs0 2>&1
|
||||
[ $? -ne 0 ] && \
|
||||
|
||||
@@ -55,7 +55,8 @@ _check_ag()
|
||||
for structure in 'sb 0' 'agf 0' 'agi 0' 'agfl 0'
|
||||
do
|
||||
echo "Corrupting $structure - setting bits to $1"
|
||||
_check_repair $1 "$structure"
|
||||
_check_repair $1 "$structure" |
|
||||
sed -e '/^error following ag 0 unlinked list$/d'
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
@@ -85,7 +85,6 @@ bad agbno AGBNO for inobt root, agno 0
|
||||
root inode chunk not found
|
||||
Phase 3 - for each AG...
|
||||
- scan and clear agi unlinked lists...
|
||||
error following ag 0 unlinked list
|
||||
- process known inodes and perform inode discovery...
|
||||
- process newly discovered inodes...
|
||||
Phase 4 - check for duplicate blocks...
|
||||
|
||||
@@ -35,7 +35,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||
_cleanup()
|
||||
{
|
||||
cd /
|
||||
rm -rf $SCRATCH_MNT/* $tmp.*
|
||||
rm -rf $tmp.*
|
||||
_scratch_unmount
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ _cleanup()
|
||||
. ./common.filter
|
||||
|
||||
threads=50
|
||||
count=1
|
||||
count=2
|
||||
|
||||
_threads_set()
|
||||
{
|
||||
@@ -68,7 +68,7 @@ _file_create()
|
||||
|
||||
cd $SCRATCH_MNT/origin
|
||||
|
||||
_disksize=`df --block-size=1 | grep $SCRATCH_DEV | awk '{print $2}'`
|
||||
_disksize=`df --block-size=1 $SCRATCH_DEV | awk -v sd=$SCRATCH_DEV 'BEGIN{c=0}{for(i=1;i<=NF;++i){a[c]=$i;++c}}END{for(entry in a){if(a[entry] ~ sd){print a[entry + 3]; break}}}'`
|
||||
_disksize=$(($_disksize / 3))
|
||||
_num=$(($_disksize / $count / $threads / 4096))
|
||||
_count=$count
|
||||
@@ -106,8 +106,6 @@ _do_workload()
|
||||
_pids=""
|
||||
_pid=1
|
||||
|
||||
rm -rf $SCRATCH_MNT/*
|
||||
|
||||
_threads_set
|
||||
_file_create
|
||||
|
||||
@@ -134,7 +132,7 @@ echo "------------------------------"
|
||||
|
||||
rm -f $seq.full
|
||||
|
||||
umount $SCRATCH_DEV 2>/dev/null
|
||||
_scratch_unmount 2>/dev/null
|
||||
_scratch_mkfs_sized $((2 * 1024 * 1024 * 1024)) >>$seq.full 2>&1
|
||||
_scratch_mount
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
#! /bin/bash
|
||||
# FS QA Test No. 274
|
||||
#
|
||||
# preallocation test
|
||||
# preallocation test:
|
||||
# Preallocate space to a file, and fill the rest of the fs to 100%.
|
||||
# Then test a write into that preallocated space, which should succeed.
|
||||
#
|
||||
#-----------------------------------------------------------------------
|
||||
# Copyright (c) 2011-2012 Fujitsu, Inc. All Rights Reserved.
|
||||
@@ -35,7 +37,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||
_cleanup()
|
||||
{
|
||||
cd /
|
||||
rm -f $SCRATCH_MNT/* $tmp.*
|
||||
rm -f $tmp.*
|
||||
_scratch_unmount
|
||||
}
|
||||
|
||||
@@ -46,6 +48,7 @@ _cleanup()
|
||||
_supported_fs generic
|
||||
_supported_os IRIX Linux
|
||||
_require_scratch
|
||||
_require_xfs_io_falloc
|
||||
|
||||
echo "------------------------------"
|
||||
echo "preallocation test"
|
||||
@@ -57,35 +60,42 @@ umount $SCRATCH_DEV 2>/dev/null
|
||||
_scratch_mkfs_sized $((1 * 1024 * 1024 * 1024)) >>$seq.full 2>&1
|
||||
_scratch_mount
|
||||
|
||||
rm -rf $SCRATCH_MNT/*
|
||||
cd $SCRATCH_MNT
|
||||
dd if=/dev/zero of=test bs=4K count=1 >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "create file err"
|
||||
status=1
|
||||
exit
|
||||
fi
|
||||
# Create a 4k file and Allocate 4M past EOF on that file
|
||||
xfs_io -F -f -c "pwrite 0 4k" -c "falloc -k 4k 4m" $SCRATCH_MNT/test \
|
||||
>>$seq.full 2>&1 || _fail "failed to create test file"
|
||||
|
||||
fallocate -n -o 4K -l 1M test >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "fallocate file err"
|
||||
status=1
|
||||
exit
|
||||
fi
|
||||
|
||||
dd if=/dev/zero of=tmp1 bs=1M >/dev/null 2>&1
|
||||
dd if=/dev/zero of=tmp2 bs=4K >/dev/null 2>&1
|
||||
# Fill the rest of the fs completely
|
||||
# Note, this will show ENOSPC errors in $seq.full, that's ok.
|
||||
echo "Fill fs with 1M IOs; ENOSPC expected" >> $seq.full
|
||||
dd if=/dev/zero of=$SCRATCH_MNT/tmp1 bs=1M >>$seq.full 2>&1
|
||||
echo "Fill fs with 4K IOs; ENOSPC expected" >> $seq.full
|
||||
dd if=/dev/zero of=$SCRATCH_MNT/tmp2 bs=4K >>$seq.full 2>&1
|
||||
sync
|
||||
# Last effort, use O_SYNC
|
||||
echo "Fill fs with 4K DIOs; ENOSPC expected" >> $seq.full
|
||||
dd if=/dev/zero of=$SCRATCH_MNT/tmp3 bs=4K oflag=sync >>$seq.full 2>&1
|
||||
# Save space usage info
|
||||
echo "Post-fill space:" >> $seq.full
|
||||
df $SCRATCH_MNT >>$seq.full 2>&1
|
||||
|
||||
dd if=/dev/zero of=test seek=1 bs=4K count=2 conv=notrunc >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "fill prealloc range err"
|
||||
status=1
|
||||
exit
|
||||
fi
|
||||
# Now attempt a write into all of the preallocated space -
|
||||
# in a very nasty way, badly fragmenting it and then filling it in.
|
||||
echo "Fill in prealloc space; fragment at offsets:" >> $seq.full
|
||||
for i in `seq 1 2 1023`; do
|
||||
echo -n "$i " >> $seq.full
|
||||
dd if=/dev/zero of=$SCRATCH_MNT/test seek=$i bs=4K count=1 conv=notrunc \
|
||||
>>$seq.full 2>/dev/null || _fail "failed to write to test file"
|
||||
done
|
||||
sync
|
||||
echo >> $seq.full
|
||||
echo "Fill in prealloc space; fill holes at offsets:" >> $seq.full
|
||||
for i in `seq 2 2 1023`; do
|
||||
echo -n "$i " >> $seq.full
|
||||
dd if=/dev/zero of=$SCRATCH_MNT/test seek=$i bs=4K count=1 conv=notrunc \
|
||||
>>$seq.full 2>/dev/null || _fail "failed to fill test file"
|
||||
done
|
||||
sync
|
||||
echo >> $seq.full
|
||||
|
||||
echo "done"
|
||||
exit
|
||||
|
||||
@@ -3,7 +3,9 @@ BUILDING THE FSQA SUITE
|
||||
_______________________
|
||||
|
||||
Building Linux:
|
||||
- cd into the xfstests directory and run make.
|
||||
- cd into the xfstests directory
|
||||
- run make
|
||||
- run make install
|
||||
|
||||
Building IRIX:
|
||||
- cd into the xfstests directory
|
||||
|
||||
+2
-2
@@ -187,7 +187,7 @@ _sort_getfattr_output()
|
||||
if [ "$FSTYP" == "xfs" -o "$FSTYP" == "udf" ]; then
|
||||
MAX_ATTRS=1000
|
||||
else # Assume max ~1 block of attrs
|
||||
BLOCK_SIZE=`stat -f $TEST_DEV | grep "Block size" | cut -d " " -f3`
|
||||
BLOCK_SIZE=`stat -f $TEST_DIR | grep "Block size" | cut -d " " -f3`
|
||||
# user.attribute_XXX="value.XXX" is about 32 bytes; leave some overhead
|
||||
let MAX_ATTRS=$BLOCK_SIZE/40
|
||||
fi
|
||||
@@ -198,7 +198,7 @@ export MAX_ATTRS
|
||||
if [ "$FSTYP" == "xfs" -o "$FSTYP" == "udf" -o "$FSTYP" == "btrfs" ]; then
|
||||
MAX_ATTRVAL_SIZE=64
|
||||
else # Assume max ~1 block of attrs
|
||||
BLOCK_SIZE=`stat -f $TEST_DEV | grep "Block size" | cut -d " " -f3`
|
||||
BLOCK_SIZE=`stat -f $TEST_DIR | grep "Block size" | cut -d " " -f3`
|
||||
# leave a little overhead
|
||||
let MAX_ATTRVAL_SIZE=$BLOCK_SIZE-256
|
||||
fi
|
||||
|
||||
+1
-1
@@ -863,7 +863,7 @@ _dump_filter_main()
|
||||
-e 's/1048576/BLOCKSZ/' \
|
||||
-e 's/2097152/BLOCKSZ/' \
|
||||
-e 's/(pid[ ]*[1-9][0-9]*)/\(pid PID\)/' \
|
||||
-e '/version 3\.0/d' \
|
||||
-e '/version [3-9]\.[0-9]/d' \
|
||||
-e 's/\/hw\/module.*$/SCRATCH_DEV/' \
|
||||
-e 's/xfsdump: ino map phase 1: .*/xfsdump: ino map <PHASES>/' \
|
||||
-e '/xfsdump: ino map phase [2]/,1d' \
|
||||
|
||||
Reference in New Issue
Block a user