Re: [PATCH] xfs: test xfsdump subtree restores

Zorro Lang <[email protected]>
Newsgroups org.kernel.vger.fstests,org.kernel.vger.linux-xfs
Message-ID <afy-9iJYNqDdXgml@zlang-mailbox>
On Thu, Mar 26, 2026 at 02:00:12PM +1100, Donald Douwsma wrote:
> Regression test for cumulative restores where a directory has been
> renamed outside of the subtree being restored triggering the assert:
> 
>   xfsrestore: tree.c:1421: noref_elim_recurse: Assertion 'isrealpr' failed
> 
> Signed-off-by: Donald Douwsma <[email protected]>
> ---
>  tests/xfs/995     | 51 +++++++++++++++++++++++++++++++++++++++++++++++
>  tests/xfs/995.out |  2 ++
>  2 files changed, 53 insertions(+)
>  create mode 100755 tests/xfs/995
>  create mode 100644 tests/xfs/995.out
> 
> diff --git a/tests/xfs/995 b/tests/xfs/995
> new file mode 100755
> index 00000000..54172572
> --- /dev/null
> +++ b/tests/xfs/995
> @@ -0,0 +1,51 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2026 Red Hat.  All Rights Reserved.
> +#
> +# FS QA Test 995
> +#
> +# Regression test for cumulative restores where a directory has been
> +# renamed outside of the subtree being restored resulting in
> +#
> +#   xfsrestore: tree.c:1421: noref_elim_recurse: Assertion 'isrealpr' failed
> +#
> +. ./common/preamble
> +_begin_fstest auto dump
> +
> +_fixed_by_git_commit xfsdump XXXXXXX \
> +	"xfsrestore: only process subtrees that are selected"
> +
> +# Override the default cleanup function.
> +_cleanup()
> +{
> +	_cleanup_dump
> +	cd /
> +	rm -r -f $tmp.*
> +}
> +
> +# Import common functions.
> +. ./common/dump
> +
> +# Modify as appropriate.
> +_require_scratch
> +_scratch_mkfs_xfs >>$seqres.full
> +_scratch_mount
> +
> +mkdir -p $SCRATCH_MNT/a/b/c/d/e/f/g
> +mkdir -p $SCRATCH_MNT/restore_me/B/C/D/E/F/G
> +
> +_do "$XFSDUMP_PROG -L "lab_l0" -M "test" -l0 -f $tmp.dump.l0 $SCRATCH_MNT"
> +
> +mv $SCRATCH_MNT/a/b/c $SCRATCH_MNT/1
> +
> +_do "$XFSDUMP_PROG -L "lab_l2" -M "test" -l2 -f $tmp.dump.l2 $SCRATCH_MNT"
> +
> +dir=$(mktemp -d $SCRATCH_MNT/restore_XXX)
> +_do "$XFSRESTORE_PROG -f $tmp.dump.l0 -r -s restore_me $dir"
> +_do "$XFSRESTORE_PROG -f $tmp.dump.l2 -r $dir"

Hi Donald,

I almost forgot we had this _do helper :)

I think your test target is the 2nd xfsrestore command line (about incremental
changes), a comment might be good.

I saw used four _do calls here. I just checked the logic of the _do helper, I
suspect your current usage might prevent the test from catching command failures,
allowing it to 'successfully' continue...

A simple fix would be adding a "note" as a first argument to each _do helper call,
e.g:
  _do "Full dump" "$XFSDUMP_PROG ..."
Once all four calls are updated this way, we can remove the "test $? -ne 0 && exit"
lines too, and rely on golden image matching to detect any failures. What do you
think?

Thanks,
Zorro

> +
> +test $? -ne 0 && exit
> +
> +echo Silence is golden
> +# success, all done
> +_exit 0
> diff --git a/tests/xfs/995.out b/tests/xfs/995.out
> new file mode 100644
> index 00000000..776fa6f2
> --- /dev/null
> +++ b/tests/xfs/995.out
> @@ -0,0 +1,2 @@
> +QA output created by 995
> +Silence is golden
> -- 
> 2.47.3
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.