Re: [PATCH v2] generic/273: Limit number of files by available inodes

Zorro Lang
2022-12-03T06:34:55Z

On Wed, Nov 30, 2022 at 06:01:53PM +0100, Jan Kara wrote:
> Test generic/273 is failing for ext4 with 1k blocksize because it is
> creating more files than we have available inodes. Just limit the number
> of files created to the number of inodes.
>
> Signed-off-by: Jan Kara <jack@suse.cz>
> ---

Looks good to me,
Reviewed-by: Zorro Lang <zlang@redhat.com>

> tests/generic/273 | 16 ++++++++++++++--
> 1 file changed, 14 insertions(+), 2 deletions(-)
>
> Changes since v1:
> * Handle btrfs which reports 0 free inodes
>
> diff --git a/tests/generic/273 b/tests/generic/273
> index f86dae9b8095..54c199962421 100755
> --- a/tests/generic/273
> +++ b/tests/generic/273
> @@ -50,9 +50,21 @@ _file_create()
>
> cd $SCRATCH_MNT/origin
>
> - _disksize=`$DF_PROG -B 1 $SCRATCH_MNT | tail -1 | $AWK_PROG '{ print $5 }'`
> + _disksize=$(_get_available_space $SCRATCH_MNT)
> + _free_inodes=$(_get_free_inode $SCRATCH_MNT)
> + # Some filesystems do not limit number of inodes and return 0
> + if [ $_free_inodes -eq 0 ]; then
> + # Guess one block per inode
> + _free_inodes=$(($_disksize / $block_size))
> + fi
> + # Leave some slack for directories etc.
> + _free_inodes=$(($_free_inodes - $_free_inodes/8))
> _disksize=$(($_disksize / 3))
> - _num=$(($_disksize / $count / $threads / $block_size))
> + _num=$(($_disksize / $count / $block_size))
> + if [ $_num -gt $_free_inodes ]; then
> + _num=$_free_inodes
> + fi
> + _num=$(($_num/$threads))
> _count=$count
> while [ $_i -lt $_num ]
> do
> --
> 2.35.3
>