From: Chao Yu via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
To: Zorro Lang <zlang@redhat.com>
Cc: Jaegeuk Kim <jaegeuk@kernel.org>,
fstests@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [f2fs-dev] [PATCH 1/2] f2fs/006: add testcase to check out-of-space case
Date: Wed, 23 Oct 2024 10:53:09 +0800 [thread overview]
Message-ID: <6ffdf1df-e4a3-4799-81d4-22f206beb720@kernel.org> (raw)
In-Reply-To: <20241023023744.nvnuavzus26gjdj5@dell-per750-06-vm-08.rhts.eng.pek2.redhat.com>
On 2024/10/23 10:37, Zorro Lang wrote:
> On Tue, Oct 15, 2024 at 10:51:05AM +0800, Chao Yu wrote:
>> This is a regression test to check whether f2fs handles dirty
>> data correctly when checkpoint is disabled, if lfs mode is on,
>> it will trigger OPU for all overwritten data, this will cost
>> free segments, so f2fs must account overwritten data as OPU
>> data when calculating free space, otherwise, it may run out
>> of free segments in f2fs' allocation function, resulting in
>> panic.
>>
>> Cc: Jaegeuk Kim <jaegeuk@kernel.org>
>> Signed-off-by: Chao Yu <chao@kernel.org>
>> ---
>> tests/f2fs/006 | 52 ++++++++++++++++++++++++++++++++++++++++++++++
>> tests/f2fs/006.out | 6 ++++++
>> 2 files changed, 58 insertions(+)
>> create mode 100755 tests/f2fs/006
>> create mode 100644 tests/f2fs/006.out
>>
>> diff --git a/tests/f2fs/006 b/tests/f2fs/006
>> new file mode 100755
>> index 00000000..b359ef8f
>> --- /dev/null
>> +++ b/tests/f2fs/006
>> @@ -0,0 +1,52 @@
>> +#! /bin/bash
>> +# SPDX-License-Identifier: GPL-2.0
>> +# Copyright (c) 2024 Oppo. All Rights Reserved.
>> +#
>> +# FS QA Test No. f2fs/006
>> +#
>> +# This is a regression test to check whether f2fs handles dirty
>> +# data correctly when checkpoint is disabled, if lfs mode is on,
>> +# it will trigger OPU for all overwritten data, this will cost
>> +# free segments, so f2fs must account overwritten data as OPU
>> +# data when calculating free space, otherwise, it may run out
>> +# of free segments in f2fs' allocation function, resulting in
>> +# panic.
>> +#
>> +. ./common/preamble
>> +_begin_fstest auto quick
>> +
>> +_cleanup()
>> +{
>> + rm -f $img
>> + _scratch_unmount >> $seqres.full
>> + cd /
>> + rm -r -f $tmp.*
>> +}
>> +
>> +_require_scratch
>> +_scratch_mkfs >> $seqres.full
>> +_scratch_mount >> $seqres.full
>> +
>> +img=$SCRATCH_MNT/f2fs.img
>> +mnt=$SCRATCH_MNT/f2fs.mnt
>> +testfile=$mnt/testfile
>> +
>> +mkdir $mnt
>> +dd if=/dev/zero of=$img bs=1M count=100 2>/dev/null
>> +$MKFS_F2FS_PROG -f $img >/dev/null 2>&1
>> +sync
>> +
>> +# use mode=lfs to let f2fs always triggers OPU
>> +mount -t $FSTYP -o loop,mode=lfs,checkpoint=disable:10%,noinline_dentry $img $mnt
>
> Hi Chao,
>
> Is the loop device necessary? What if use SCRATCH_DEV and SCRATCH_MNT directly?
Hi Zorro,
It uses loop device to limit image size, so that we can speed
up padding steps of the test since it depends on ENOSPC state.
Or maybe we can mkfs.f2fs $SCRATCH_DEV w/ specified sector size?
Any suggestion?
Thanks,
>
> Thanks,
> Zorro
>
>> +
>> +dd if=/dev/zero of=$testfile bs=1M count=50 2>/dev/null
>> +
>> +# it may run out of free space of f2fs and hang kernel
>> +dd if=/dev/zero of=$testfile bs=1M count=50 conv=notrunc conv=fsync
>> +dd if=/dev/zero of=$testfile bs=1M count=50 conv=notrunc conv=fsync
>> +
>> +mount -o remount,checkpoint=enable $mnt
>> +umount $mnt
>> +
>> +status=0
>> +exit
>> diff --git a/tests/f2fs/006.out b/tests/f2fs/006.out
>> new file mode 100644
>> index 00000000..a2c7ba48
>> --- /dev/null
>> +++ b/tests/f2fs/006.out
>> @@ -0,0 +1,6 @@
>> +QA output created by 006
>> +50+0 records in
>> +50+0 records out
>> +dd: error writing '/mnt/scratch_f2fs/f2fs.mnt/testfile': No space left on device
>> +3+0 records in
>> +2+0 records out
>> --
>> 2.40.1
>>
>
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
next prev parent reply other threads:[~2024-10-23 2:53 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-15 2:51 [f2fs-dev] [PATCH 1/2] f2fs/006: add testcase to check out-of-space case Chao Yu via Linux-f2fs-devel
2024-10-15 2:51 ` [f2fs-dev] [PATCH 2/2] f2fs/007: add testcase to check consistency of compressed inode metadata Chao Yu via Linux-f2fs-devel
2024-10-23 3:07 ` Zorro Lang
2024-10-23 7:18 ` Chao Yu via Linux-f2fs-devel
2024-10-23 2:37 ` [f2fs-dev] [PATCH 1/2] f2fs/006: add testcase to check out-of-space case Zorro Lang
2024-10-23 2:53 ` Chao Yu via Linux-f2fs-devel [this message]
2024-10-23 3:17 ` Zorro Lang
2024-10-23 3:27 ` Chao Yu via Linux-f2fs-devel
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=6ffdf1df-e4a3-4799-81d4-22f206beb720@kernel.org \
--to=linux-f2fs-devel@lists.sourceforge.net \
--cc=chao@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=jaegeuk@kernel.org \
--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;
as well as URLs for NNTP newsgroup(s).