Re: [PATCH 1/2] f2fs/006: add testcase to check out-of-space case

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



On Wed, Oct 23, 2024 at 10:53:09AM +0800, Chao Yu wrote:
> 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@xxxxxxxxxx>
> > > Signed-off-by: Chao Yu <chao@xxxxxxxxxx>
> > > ---
> > >   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?

Can scratch_mkfs_sized() help? I saw it supports f2fs.

Thanks,
Zorro

> 
> 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
> > > 
> > 
> 





[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux