From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: guaneryu@gmail.com
Cc: linux-xfs@vger.kernel.org, fstests@vger.kernel.org
Subject: [PATCH v2 2/4] xfs: regression test for rmapbt fdblocks accounting problems
Date: Thu, 21 Jun 2018 23:40:42 -0700 [thread overview]
Message-ID: <20180622064042.GO4838@magnolia> (raw)
In-Reply-To: <152960596196.26479.13083497192197135552.stgit@magnolia>
From: Darrick J. Wong <darrick.wong@oracle.com>
In "xfs: fix fdblocks accounting w/ RMAPBT per-AG reservation", we fixed
the per-ag reservation code so that we always decrease fdblocks by the
reserved size because rmapbt blocks are counted as free space.
The primary symptom of this bug is that if the rmapbt has expanded since
mount time, the disk block counters reported via statfs will change
across a remount. Therefore, we exercise this as a regression test.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
v2: add silence is golden message
---
tests/xfs/712 | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/xfs/712.out | 2 ++
tests/xfs/group | 1 +
3 files changed, 67 insertions(+)
create mode 100755 tests/xfs/712
create mode 100644 tests/xfs/712.out
diff --git a/tests/xfs/712 b/tests/xfs/712
new file mode 100755
index 00000000..ab2342ef
--- /dev/null
+++ b/tests/xfs/712
@@ -0,0 +1,64 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2018 Oracle, Inc. All rights reserved.
+#
+# FS QA Test No. 712
+#
+# Make sure that the statfs b_avail counter doesn't change across remount
+# after the rmapbt has grown in size.
+#
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# remove previous \$seqres.full before test
+rm -f $seqres.full
+
+# real QA test starts here
+_supported_os Linux
+_supported_fs xfs
+_require_test_program "punch-alternating"
+_require_xfs_scratch_rmapbt
+
+_scratch_mkfs >> $seqres.full
+_scratch_mount
+
+# Make sure we allocate a big enough file such that punching out every other
+# block will cause the rmapbt to expand by at least one block.
+blksz=$(_get_file_block_size $SCRATCH_MNT)
+nr_rmap_per_rmapbt=$(( (blksz - 56) / 24))
+blks=$(( (nr_rmap_per_rmapbt + 2) * 2))
+$XFS_IO_PROG -f -c "falloc 0 $((blks * blksz))" $SCRATCH_MNT/a >> $seqres.full
+./src/punch-alternating $SCRATCH_MNT/a
+
+# Do the stat counters change across the remount?
+before=$(stat -f -c '%b %f' $SCRATCH_MNT)
+_scratch_cycle_mount
+after=$(stat -f -c '%b %f' $SCRATCH_MNT)
+
+if [ "${before}" != "${after}" ]; then
+ echo "counters changed: ${before} ${after}"
+ echo "before: ${before}" >> $seqres.full
+ echo "after: ${after}" >> $seqres.full
+fi
+
+echo "Silence is golden."
+
+# success, all done
+status=0
+exit
diff --git a/tests/xfs/712.out b/tests/xfs/712.out
new file mode 100644
index 00000000..33a76b21
--- /dev/null
+++ b/tests/xfs/712.out
@@ -0,0 +1,2 @@
+QA output created by 712
+Silence is golden.
diff --git a/tests/xfs/group b/tests/xfs/group
index 932ab909..2f1c8467 100644
--- a/tests/xfs/group
+++ b/tests/xfs/group
@@ -447,3 +447,4 @@
447 auto mount
448 auto quick fuzzers
449 auto quick
+712 auto quick rmap
next prev parent reply other threads:[~2018-06-22 6:40 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-21 18:32 [PATCH 0/4] fstests: fixes and new tests Darrick J. Wong
2018-06-21 18:32 ` [PATCH 1/4] xfs/365: fuzz inobt in ag 1 Darrick J. Wong
2018-06-21 18:32 ` [PATCH 2/4] xfs: regression test for rmapbt fdblocks accounting problems Darrick J. Wong
2018-06-22 6:35 ` [PATCH 5/8] xfs: recheck reflink state after grabbing ILOCK_SHARED for a write Allison Henderson
2018-06-22 6:39 ` Darrick J. Wong
2018-06-22 6:40 ` Darrick J. Wong [this message]
2018-06-21 18:32 ` [PATCH 3/4] generic: mread past eof shows nonzero contents Darrick J. Wong
2018-06-25 4:00 ` Eryu Guan
2018-06-25 15:34 ` Darrick J. Wong
2018-06-27 4:50 ` Eryu Guan
2018-06-21 18:32 ` [PATCH 4/4] xfs: fuzz every field of every structure and test kernel crashes Darrick J. Wong
2018-06-28 3:10 ` Eryu Guan
2018-06-28 4:31 ` Darrick J. Wong
2018-07-03 22:22 ` Darrick J. Wong
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=20180622064042.GO4838@magnolia \
--to=darrick.wong@oracle.com \
--cc=fstests@vger.kernel.org \
--cc=guaneryu@gmail.com \
--cc=linux-xfs@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).