From: "Darrick J. Wong" <djwong@kernel.org>
To: Zorro Lang <zlang@redhat.com>
Cc: hch@lst.de, linux-xfs@vger.kernel.org, fstests@vger.kernel.org
Subject: Re: [PATCH 1/1] xfs: test filesystem recovery with rdump
Date: Mon, 24 Mar 2025 18:20:34 -0700 [thread overview]
Message-ID: <20250325012034.GJ89034@frogsfrogsfrogs> (raw)
In-Reply-To: <20250325010851.3lzh3wclopjpygso@dell-per750-06-vm-08.rhts.eng.pek2.redhat.com>
On Tue, Mar 25, 2025 at 09:08:51AM +0800, Zorro Lang wrote:
> On Mon, Mar 24, 2025 at 05:50:26PM -0700, Darrick J. Wong wrote:
> > On Sun, Mar 23, 2025 at 04:04:29AM +0800, Zorro Lang wrote:
> > > On Fri, Mar 21, 2025 at 02:27:07PM -0700, Darrick J. Wong wrote:
> > > > From: Darrick J. Wong <djwong@kernel.org>
> > > >
> > > > Test how well we can dump a fully populated filesystem's contents.
> > > >
> > > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
> > > > Reviewed-by: Christoph Hellwig <hch@lst.de>
> > > > ---
> > > > tests/xfs/1895 | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++
> > > > tests/xfs/1895.out | 6 ++
> > > > 2 files changed, 159 insertions(+)
> > > > create mode 100755 tests/xfs/1895
> > > > create mode 100644 tests/xfs/1895.out
> > > >
> > > >
> > > > diff --git a/tests/xfs/1895 b/tests/xfs/1895
> > > > new file mode 100755
> > > > index 00000000000000..18b534d328e9fd
> > > > --- /dev/null
> > > > +++ b/tests/xfs/1895
> > > > @@ -0,0 +1,153 @@
> > > > +#! /bin/bash
> > > > +# SPDX-License-Identifier: GPL-2.0
> > > > +# Copyright (c) 2025 Oracle, Inc. All Rights Reserved.
> > > > +#
> > > > +# FS QA Test No. 1895
> > > > +#
> > > > +# Populate a XFS filesystem, ensure that rdump can "recover" the contents to
> > > > +# another directory, and compare the contents.
> > > > +#
> > > > +. ./common/preamble
> > > > +_begin_fstest auto scrub
> > > > +
> > > > +_cleanup()
> > > > +{
> > > > + command -v _kill_fsstress &>/dev/null && _kill_fsstress
> > >
> > > I'm wondering why you always do "command -v _kill_fsstress &>/dev/null" before
> > > _kill_fsstress, isn't _kill_fsstress a common helper in common/rc ?
> >
> > Yeah, I probably copy-pasta'd that from common/preamble. Will remove it
> > before the next posting, assuming you don't decide to fix+merge it.
>
> I can "fix+merge" that:) if you don't have more changes, except:
>
> - command -v _kill_fsstress &>/dev/null && _kill_fsstress
> + _kill_fsstress
No changes other than applying hch's rvb that he attached to the other
thread.
--D
> Thanks,
> Zorro
>
> >
> > --D
> >
> > > Thanks,
> > > Zorro
> > >
> > > > + cd /
> > > > + test -e "$testfiles" && rm -r -f $testfiles
> > > > +}
> > > > +
> > > > +_register_cleanup "_cleanup" BUS
> > > > +
> > > > +# Import common functions.
> > > > +. ./common/filter
> > > > +. ./common/populate
> > > > +. ./common/fuzzy
> > > > +
> > > > +_require_xfs_db_command "rdump"
> > > > +_require_test
> > > > +_require_scratch
> > > > +_require_scrub
> > > > +_require_populate_commands
> > > > +
> > > > +make_md5()
> > > > +{
> > > > + (cd $1 ; find . -type f -print0 | xargs -0 md5sum) > $tmp.md5.$2
> > > > +}
> > > > +
> > > > +cmp_md5()
> > > > +{
> > > > + (cd $1 ; md5sum --quiet -c $tmp.md5.$2)
> > > > +}
> > > > +
> > > > +make_stat()
> > > > +{
> > > > + # columns: raw mode in hex,
> > > > + # major rdev for special
> > > > + # minor rdev for special
> > > > + # uid of owner
> > > > + # gid of owner
> > > > + # file type
> > > > + # total size
> > > > + # mtime
> > > > + # name
> > > > + # We can't directly control directory sizes so filter them.
> > > > + # Too many things can bump (or not) atime so don't test that.
> > > > + (cd $1 ; find . -print0 |
> > > > + xargs -0 stat -c '%f %t:%T %u %g %F %s %Y %n' |
> > > > + sed -e 's/ directory [1-9][0-9]* / directory SIZE /g' |
> > > > + sort) > $tmp.stat.$2
> > > > +}
> > > > +
> > > > +cmp_stat()
> > > > +{
> > > > + diff -u $tmp.stat.$1 $tmp.stat.$2
> > > > +}
> > > > +
> > > > +make_stat_files() {
> > > > + for file in "${FILES[@]}"; do
> > > > + find "$1/$file" -print0 | xargs -0 stat -c '%f %t:%T %u %g %F %s %Y %n'
> > > > + done | sed \
> > > > + -e 's/ directory [1-9][0-9]* / directory SIZE /g' \
> > > > + -e "s| $1| DUMPDIR|g" \
> > > > + | sort > $tmp.stat.files.$2
> > > > +}
> > > > +
> > > > +cmp_stat_files()
> > > > +{
> > > > + diff -u $tmp.stat.files.$1 $tmp.stat.files.$2
> > > > +}
> > > > +
> > > > +make_stat_dir() {
> > > > + find "$1" -print0 | \
> > > > + xargs -0 stat -c '%f %t:%T %u %g %F %s %Y %n' | sed \
> > > > + -e 's/ directory [1-9][0-9]* / directory SIZE /g' \
> > > > + -e "s| $1| DUMPDIR|g" \
> > > > + | sort > $tmp.stat.dir.$2
> > > > +}
> > > > +
> > > > +cmp_stat_dir()
> > > > +{
> > > > + diff -u $tmp.stat.dir.$1 $tmp.stat.dir.$2
> > > > +}
> > > > +
> > > > +FILES=(
> > > > + "/S_IFDIR.FMT_INLINE"
> > > > + "/S_IFBLK"
> > > > + "/S_IFCHR"
> > > > + "/S_IFLNK.FMT_LOCAL"
> > > > + "/S_IFIFO"
> > > > + "/S_IFDIR.FMT_INLINE/00000001"
> > > > + "/ATTR.FMT_EXTENTS_REMOTE3K"
> > > > + "/S_IFREG.FMT_EXTENTS"
> > > > + "/S_IFREG.FMT_BTREE"
> > > > + "/BNOBT"
> > > > + "/S_IFDIR.FMT_BLOCK"
> > > > +)
> > > > +DIR="/S_IFDIR.FMT_LEAF"
> > > > +
> > > > +testfiles=$TEST_DIR/$seq
> > > > +mkdir -p $testfiles
> > > > +
> > > > +echo "Format and populate"
> > > > +_scratch_populate_cached nofill > $seqres.full 2>&1
> > > > +_scratch_mount
> > > > +
> > > > +_run_fsstress -n 500 -d $SCRATCH_MNT/newfiles
> > > > +
> > > > +make_stat $SCRATCH_MNT before
> > > > +make_md5 $SCRATCH_MNT before
> > > > +make_stat_files $SCRATCH_MNT before
> > > > +make_stat_dir $SCRATCH_MNT/$DIR before
> > > > +_scratch_unmount
> > > > +
> > > > +echo "Recover filesystem"
> > > > +dumpdir1=$testfiles/rdump
> > > > +dumpdir2=$testfiles/sdump
> > > > +dumpdir3=$testfiles/tdump
> > > > +rm -r -f $dumpdir1 $dumpdir2 $dumpdir3
> > > > +
> > > > +# as of linux 6.12 fchownat does not work on symlinks
> > > > +_scratch_xfs_db -c "rdump / $dumpdir1" | sed -e '/could not be set/d'
> > > > +_scratch_xfs_db -c "rdump ${FILES[*]} $dumpdir2" | sed -e '/could not be set/d'
> > > > +_scratch_xfs_db -c "rdump $DIR $dumpdir3" | sed -e '/could not be set/d'
> > > > +
> > > > +echo "Check file contents"
> > > > +make_stat $dumpdir1 after
> > > > +cmp_stat before after
> > > > +cmp_md5 $dumpdir1 before
> > > > +
> > > > +echo "Check selected files contents"
> > > > +make_stat_files $dumpdir2 after
> > > > +cmp_stat_files before after
> > > > +
> > > > +echo "Check single dir extraction contents"
> > > > +make_stat_dir $dumpdir3 after
> > > > +cmp_stat_dir before after
> > > > +
> > > > +# remount so we can check this fs
> > > > +_scratch_mount
> > > > +
> > > > +# success, all done
> > > > +status=0
> > > > +exit
> > > > diff --git a/tests/xfs/1895.out b/tests/xfs/1895.out
> > > > new file mode 100644
> > > > index 00000000000000..de639ed3fc7e38
> > > > --- /dev/null
> > > > +++ b/tests/xfs/1895.out
> > > > @@ -0,0 +1,6 @@
> > > > +QA output created by 1895
> > > > +Format and populate
> > > > +Recover filesystem
> > > > +Check file contents
> > > > +Check selected files contents
> > > > +Check single dir extraction contents
> > > >
> > >
> > >
> >
>
next prev parent reply other threads:[~2025-03-25 1:20 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-21 21:25 [PATCHBOMB v2] fstests: random fixes and 6.14 stragglers Darrick J. Wong
2025-03-21 21:26 ` [PATCHSET 1/3] fstests: test dumping fs directory trees Darrick J. Wong
2025-03-21 21:27 ` [PATCH 1/1] xfs: test filesystem recovery with rdump Darrick J. Wong
2025-03-22 20:04 ` Zorro Lang
2025-03-25 0:50 ` Darrick J. Wong
2025-03-25 1:08 ` Zorro Lang
2025-03-25 1:20 ` Darrick J. Wong [this message]
2025-03-21 21:26 ` [PATCHSET 2/3] fstests: test handling emoji filenames better Darrick J. Wong
2025-03-21 21:27 ` [PATCH 1/1] generic/45[34]: add colored emoji variants to unicode tests Darrick J. Wong
2025-03-21 21:26 ` [PATCHSET 3/3] fstests: more random fixes for v2025.03.17 Darrick J. Wong
2025-03-21 21:27 ` [PATCH 1/4] xfs/614: determine the sector size of the fs image by doing a test format Darrick J. Wong
2025-03-21 21:27 ` [PATCH 2/4] generic/537: disable quota mount options for pre-metadir rt filesystems Darrick J. Wong
2025-03-22 14:37 ` Zorro Lang
2025-03-25 0:51 ` Darrick J. Wong
2025-03-21 21:28 ` [PATCH 3/4] common/populate: drop fallocate mode 0 requirement Darrick J. Wong
2025-03-21 21:28 ` [PATCH 4/4] xfs/818: fix some design issues Darrick J. Wong
2025-03-22 15:00 ` Zorro Lang
2025-04-01 14:43 ` [PATCHSET] xfsprogs: localize the python programs Darrick J. Wong
2025-04-01 14:43 ` [PATCH 1/5] xfs_protofile: rename source code to .py.in Darrick J. Wong
2025-04-01 14:43 ` [PATCH 2/5] xfs_scrub_all: " Darrick J. Wong
2025-04-01 14:44 ` [PATCH 3/5] Makefile: inject package name/version/bugreport into pot file Darrick J. Wong
2025-04-01 14:44 ` [PATCH 4/5] xfs_protofile: add messages to localization catalog Darrick J. Wong
2025-04-01 14:44 ` [PATCH 5/5] xfs_scrub_all: localize the strings in the program Darrick J. Wong
2025-04-02 9:55 ` [PATCHSET] xfsprogs: localize the python programs Andrey Albershteyn
2025-04-02 14:00 ` Bill O'Donnell
-- strict thread matches above, loose matches on Subject: below --
2025-03-12 23:10 [PATCHSET 1/3] fstests: test dumping fs directory trees Darrick J. Wong
2025-03-12 23:11 ` [PATCH 1/1] xfs: test filesystem recovery with rdump Darrick J. Wong
2025-02-19 0:49 [PATCHSET 12/12] fstests: dump fs directory trees Darrick J. Wong
2025-02-19 1:09 ` [PATCH 1/1] xfs: test filesystem recovery with rdump Darrick J. Wong
2025-02-19 7:45 ` Christoph Hellwig
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=20250325012034.GJ89034@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=hch@lst.de \
--cc=linux-xfs@vger.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