Re: [PATCH v2] xfs: test xfsdump when an inode < root inode is present

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



On Mon, Apr 11, 2022 at 04:34:33PM +0800, Zorro Lang wrote:
> On Mon, Apr 11, 2022 at 03:31:35PM +1000, Dave Chinner wrote:
> > On Sun, Apr 10, 2022 at 08:11:03PM +0800, Zorro Lang wrote:
> > > On Fri, Apr 08, 2022 at 09:00:56PM -0700, Darrick J. Wong wrote:
> > > > On Sat, Apr 09, 2022 at 01:08:47AM +0800, Zorro Lang wrote:
> > > > > From: Eric Sandeen <sandeen@xxxxxxxxxx>
> > > > > 
> > > > > This tests a longstanding bug where xfsdumps are not properly
> > > > > created when an inode is present on the filesytsem which has
> > > > > a lower number than the root inode.
> > > > > 
> > > > > Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>
> > > > > Signed-off-by: Zorro Lang <zlang@xxxxxxxxxx>
> > > > > ---
> > > > > 
> > > > > Friendly ping for reviewing.
> > > > > 
> > > > > Thanks,
> > > > > Zorro
> > > > > 
> > > > >  common/dump       |  1 +
> > > > >  tests/xfs/543     | 63 +++++++++++++++++++++++++++++++++++++++++++++++
> > > > >  tests/xfs/543.out | 47 +++++++++++++++++++++++++++++++++++
> > > > >  3 files changed, 111 insertions(+)
> > > > >  create mode 100755 tests/xfs/543
> > > > >  create mode 100644 tests/xfs/543.out
> > > > > 
> > > > > diff --git a/common/dump b/common/dump
> > > > > index ea16d442..ab48cd13 100644
> > > > > --- a/common/dump
> > > > > +++ b/common/dump
> > > > > @@ -219,6 +219,7 @@ _require_tape()
> > > > >  
> > > > >  _wipe_fs()
> > > > >  {
> > > > > +    [[ "$WIPE_FS" = "no" ]] && return
> > > > 
> > > > Is WIPE_FS intended as a general means to prevent wipefs -a between
> > > > tests?  If so, it ought to be in the README.
> > > 
> > > Actually I don't know how to if I should say WIPE_FS means to prevent
> > > wipefs -a between tests. Due to:
> > > 
> > > 1) We have a _wipe_fs() in common/dump[1], it's very old, and it only
> > > try to make a new xfs, although it calls wipe "fs"... And it's only used
> > > for tests/xfs/* cases to call _create_dumpdir_*() function.
> > > 
> > > 2) Then we have _try_wipe_scratch_devs() in common/rc [2], which calls
> > > _try_wipe_scratch_xfs() in common/xfs [3] (which is newer), it's only
> > > used in ./check script now.
> > > 
> > > So I'm wondering if we'd better to change the _wipe_fs() to:
> > > _wipe_dump()
> > > {
> > > 	[[ "$WIPE_DUMP" = "no" ]] && return
> > > 	_require_scratch
> > > 
> > > 	_try_wipe_scratch_devs >>$seqres.full
> > > 	_scratch_mount >>$seqres.full
> > > }
> > > 
> > > What do you think?
> > 
> > common/dump::_wipe_fs() is effectively just _scratch_mkfs() followed
> > by mounting it. It does not need to exist at all.

Aha!

> Oh! I was really confused why dumpdir need to wipefs at first, so that's
> the reason. I just checked all cases which call _create_dumpdir_*, and
> yes, they just hope to omit below common steps by running _create_dumpdir_*:
> _require_scratch
> _scratch_mkfs
> _scratch_mount
> 
> I'd like to remove the common/dump::_wipe_fs(), and help all related cases
> call _require_scratch && _scratch_mkfs && _scratch_mount by themselves. Due
> to it's match the current xfstests case format.
> 
> Is that good to you? Anymore suggestions or notice ?

Sounds good to /me.

--D

> Thanks,
> Zorro
> 
> > 
> > The test(s) need to have run _require_scratch() in it's setup, it
> > shouldn't be hidden deep inside random functions that fill the
> > scratch device.
> > 
> > They should also run scratch_mkfs/mount themselves to prep the
> > scratch device, and then _wipe_fs() can go away entirely.
> > 
> > And the new test simply calls the function to populate the scratch
> > device at the place where you want to preserve the previous contents
> > of the scratch device without first running scratch_mkfs....
> > 
> > Cheers,
> > 
> > Dave.
> > -- 
> > Dave Chinner
> > david@xxxxxxxxxxxxx
> > 
> 



[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