mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
a9868eb48d
The shared/006 uses _scratch_mkfs_sized to create a limited size file system, and then creates inodes until it gets ENOSPC, and then checks to make sure the file system is consistent. It then remounts the file system, removes all of the files, and makes sure the file system is consistent afterwards. This test was marked as only being supported on ext[234] and xfs, and so it was in shared. Now introduce a new _require_inode_limits() rule to run test on filesystems that have a fixed inode number, then move the test to generic. Signed-off-by: Theodore Ts'o <tytso@mit.edu> Reviewed-by: Eryu Guan <guaneryu@gmail.com> Signed-off-by: Eryu Guan <guaneryu@gmail.com>
81 lines
1.7 KiB
Bash
Executable File
81 lines
1.7 KiB
Bash
Executable File
#! /bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
# Copyright (c) 2014 Red Hat Inc. All Rights Reserved.
|
|
#
|
|
# FS QA Test No. generic/558
|
|
#
|
|
# Stress test fs by using up all inodes and check fs.
|
|
#
|
|
# Also a regression test for xfsprogs commit
|
|
# d586858 xfs_repair: fix sibling pointer tests in verify_dir2_path()
|
|
#
|
|
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.*
|
|
}
|
|
|
|
create_file()
|
|
{
|
|
local dir=$1
|
|
local nr_file=$2
|
|
local prefix=$3
|
|
local i=0
|
|
|
|
while [ $i -lt $nr_file ]; do
|
|
echo -n > $dir/${prefix}_${i}
|
|
let i=$i+1
|
|
done
|
|
}
|
|
|
|
# get standard environment, filters and checks
|
|
. ./common/rc
|
|
. ./common/filter
|
|
|
|
# real QA test starts here
|
|
_supported_fs generic
|
|
_supported_os Linux
|
|
_require_inode_limits
|
|
|
|
rm -f $seqres.full
|
|
echo "Silence is golden"
|
|
|
|
_scratch_mkfs_sized $((1024 * 1024 * 1024)) >>$seqres.full 2>&1
|
|
_scratch_mount
|
|
|
|
i=0
|
|
free_inode=`_get_free_inode $SCRATCH_MNT`
|
|
file_per_dir=1000
|
|
loop=$((free_inode / file_per_dir + 1))
|
|
mkdir -p $SCRATCH_MNT/testdir
|
|
|
|
echo "Create $((loop * file_per_dir)) files in $SCRATCH_MNT/testdir" >>$seqres.full
|
|
while [ $i -lt $loop ]; do
|
|
create_file $SCRATCH_MNT/testdir $file_per_dir $i >>$seqres.full 2>&1 &
|
|
let i=$i+1
|
|
done
|
|
wait
|
|
|
|
# log inode status in $seqres.full for debug purpose
|
|
echo "Inode status after taking all inodes" >>$seqres.full
|
|
$DF_PROG -i $SCRATCH_MNT >>$seqres.full
|
|
|
|
_check_scratch_fs
|
|
|
|
# Check again after removing all the files
|
|
rm -rf $SCRATCH_MNT/testdir
|
|
echo "Inode status after deleting all test files" >>$seqres.full
|
|
$DF_PROG -i $SCRATCH_MNT >>$seqres.full
|
|
|
|
status=0
|
|
exit
|