From: Masayoshi Mizuma <m.mizuma@xxxxxxxxxxxxxx> commit 25195eb ("xfsdump: handle bind mount target") introduced a bug of xfsdump which doesn't store the files to the dump file correctly when the root inode number is changed. The commit 25195eb is reverted, and commit 0717c1c ("xfsdump: intercept bind mount targets") which is in xfsdump v3.1.10 fixes the bug to reject the filesystem if it's bind-mounted. Test that xfsdump can reject the bind-mounted filesystem. Signed-off-by: Masayoshi Mizuma <m.mizuma@xxxxxxxxxxxxxx> --- tests/xfs/544 | 63 +++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/544.out | 2 ++ 2 files changed, 65 insertions(+) create mode 100755 tests/xfs/544 create mode 100644 tests/xfs/544.out diff --git a/tests/xfs/544 b/tests/xfs/544 new file mode 100755 index 00000000..1d586ebc --- /dev/null +++ b/tests/xfs/544 @@ -0,0 +1,63 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2022 Fujitsu Limited. All Rights Reserved. +# +# FS QA Test 544 +# +# Regression test for commit: +# 0717c1c ("xfsdump: intercept bind mount targets") + +. ./common/preamble +_begin_fstest auto dump + +_cleanup() +{ + _cleanup_dump + cd / + rm -r -f $tmp.* + $UMOUNT_PROG $mntpnt2 2> /dev/null + rmdir $mntpnt1/dir 2> /dev/null + $UMOUNT_PROG $mntpnt1 2> /dev/null + rmdir $mntpnt2 2> /dev/null + rmdir $mntpnt1 2> /dev/null + [ -n "$loopdev" ] && _destroy_loop_device $loopdev + rm -f "$TEST_DIR"/fsfile +} + +# Import common functions. +. ./common/filter +. ./common/dump + +# real QA test starts here + +_supported_fs xfs + +mntpnt1=$TEST_DIR/MNT1 +mntpnt2=$TEST_DIR/MNT2 + + +# Set up +$MKFS_XFS_PROG -s size=4096 -b size=4096 \ + -dfile,name=$TEST_DIR/fsfile,size=8649728b,sunit=1024,swidth=2048 \ + >> $seqres.full 2>&1 || _fail "mkfs failed" + +loopdev=$(_create_loop_device "$TEST_DIR"/fsfile) + +mkdir $mntpnt1 >> $seqres.full 2>&1 || _fail "mkdir \"$mntpnt1\" failed" + +_mount $loopdev $mntpnt1 +mkdir $mntpnt1/dir >> $seqres.full 2>&1 || _fail "mkdir \"$mntpnt1/dir\" failed" +mkdir $mntpnt2 >> $seqres.full 2>&1 || _fail "mkdir \"$mntpnt2\" failed" + + +# Test +echo "*** dump with bind-mounted test ***" >> $seqres.full + +mount -o bind $mntpnt1/dir $mntpnt2 + +$XFSDUMP_PROG -L session -M test -f $tmp.dump $mntpnt2 \ + >> $seqres.full 2>&1 && echo "dump with bind-mounted should be failed, but passed." + +echo "Silence is golden" +status=0 +exit diff --git a/tests/xfs/544.out b/tests/xfs/544.out new file mode 100644 index 00000000..fc7ebff3 --- /dev/null +++ b/tests/xfs/544.out @@ -0,0 +1,2 @@ +QA output created by 544 +Silence is golden -- 2.31.1