blob: 4e22ce656b8c8011c7b6078f66e4e55ec2ae1499 [file] [log] [blame]
#! /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()
#
. ./common/preamble
_begin_fstest auto enospc
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
}
# Import common functions.
. ./common/filter
# real QA test starts here
_supported_fs generic
_require_inode_limits
_require_scratch
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