From: Zorro Lang <zlang@kernel.org>
To: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Cc: Zorro Lang <zlang@redhat.com>,
fstests@vger.kernel.org, Disha Goel <disgoel@linux.ibm.com>
Subject: Re: [PATCH v2] ext4/307: Calculate donor size to avoid failures for 64k bs
Date: Sat, 16 May 2026 00:26:33 +0800 [thread overview]
Message-ID: <agdJEsrKflGff5wq@zlang-mailbox> (raw)
In-Reply-To: <20260401100941.76082-1-ojaswin@linux.ibm.com>
On Wed, Apr 01, 2026 at 03:39:41PM +0530, Ojaswin Mujoo wrote:
> Calculating size of donor file based on du output causes the following
> issue:
>
> e4compact.c:68: do_defrag_range: Assertion `donor->length >= len' failed.
> ./common/rc: line 4616: 1583182 Aborted (core dumped)
>
> The issue is that e4compat asserts that the stat.st_size of all files
> combined shouldn't be more than that of the donor file. In case of 64k
> blocksize, fsstress often creates sparse files which have >3G size even
> though their disk utilization is <100M. Since donor file is not big
> enough, this trips e4compat causing the failure.
>
> Fix this by using stat.st_size rather than du value to get the size.
> Also, make some changes to avoid future ENOSPC like reducing the -n
> passed to fsstress to keep the size around 2G and making sure we use the
> whole SCRATCH disk instead of 500M.
>
> While we are at it, add some new lines to make the code bit more
> readable.
>
> Reported-by: Disha Goel <disgoel@linux.ibm.com>
> Tested-by: Disha Goel <disgoel@linux.ibm.com>
> Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
> ---
It tests good to me,
Reviewed-by: Zorro Lang <zlang@kernel.org>
> tests/ext4/307 | 18 +++++++++++++-----
> 1 file changed, 13 insertions(+), 5 deletions(-)
>
> diff --git a/tests/ext4/307 b/tests/ext4/307
> index 48073347..ed6fc664 100755
> --- a/tests/ext4/307
> +++ b/tests/ext4/307
> @@ -19,18 +19,26 @@ _workout()
> echo ""
> echo "Run fsstress"
> out=$SCRATCH_MNT/fsstress.$$
> - args=`_scale_fsstress_args -p4 -n999 -f setattr=1 -d $out`
> + args=`_scale_fsstress_args -p4 -n500 -f setattr=1 -d $out`
> echo "fsstress $args" >> $seqres.full
> _run_fsstress $args
> +
> find $out -type f > $out.list
> cat $out.list | xargs md5sum > $out.md5sum
> - # Use -m to get integer MB size to avoid decimals (e.g. 1.5M) which xfs_io rejects
> - usage=$(du -sm $out | awk '{print $1}')
> +
> + # Get the total of stat.st_size of each file to determine the
> + # size of donor file. We use st_size here instead of blocks used
> + # because thats what e4compat.c checks against.
> + bytes=$(xargs -r stat -c %s < $out.list | awk '{s+=$1} END{print s}')
> + echo "Total bytes used: $bytes" >> $seqres.full
> +
> echo "Allocate donor file"
> - $XFS_IO_PROG -c "falloc 0 ${usage}m" -f $SCRATCH_MNT/donor | _filter_xfs_io
> + $XFS_IO_PROG -c "falloc 0 $bytes" -f $SCRATCH_MNT/donor | _filter_xfs_io
> +
> echo "Perform compacting"
> cat $out.list | run_check $here/src/e4compact \
> -i -v -f $SCRATCH_MNT/donor >> $seqres.full 2>&1
> +
> echo "Check data"
> run_check md5sum -c $out.md5sum
> }
> @@ -42,7 +50,7 @@ _require_scratch
> _require_defrag
> _require_xfs_io_command "falloc"
>
> -_scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seqres.full 2>&1
> +_scratch_mkfs >> $seqres.full 2>&1
> _scratch_mount
>
> _workout
> --
> 2.52.0
>
>
prev parent reply other threads:[~2026-05-15 16:26 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-01 10:09 [PATCH v2] ext4/307: Calculate donor size to avoid failures for 64k bs Ojaswin Mujoo
2026-05-15 16:26 ` Zorro Lang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=agdJEsrKflGff5wq@zlang-mailbox \
--to=zlang@kernel.org \
--cc=disgoel@linux.ibm.com \
--cc=fstests@vger.kernel.org \
--cc=ojaswin@linux.ibm.com \
--cc=zlang@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox