All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Biggers <ebiggers@kernel.org>
To: fstests@vger.kernel.org
Cc: linux-xfs@vger.kernel.org
Subject: [PATCH v2] generic: test PF_MEMALLOC interfering with accounting file write
Date: Thu,  2 Apr 2020 20:33:55 -0700	[thread overview]
Message-ID: <20200403033355.140984-1-ebiggers@kernel.org> (raw)

From: Eric Biggers <ebiggers@google.com>

Add a regression test for the bug fixed by commit 10a98cb16d80 ("xfs:
clear PF_MEMALLOC before exiting xfsaild thread").

Signed-off-by: Eric Biggers <ebiggers@google.com>
---

Changed since v1:
    - Fix _require_bsd_process_accounting() to not leave process
      accounting enabled.
    - Removed RFC tag since the kernel fix is now in mainline.
   

 common/config         |  1 +
 common/rc             | 12 +++++++++
 tests/generic/901     | 60 +++++++++++++++++++++++++++++++++++++++++++
 tests/generic/901.out |  2 ++
 tests/generic/group   |  1 +
 5 files changed, 76 insertions(+)
 create mode 100644 tests/generic/901
 create mode 100644 tests/generic/901.out

diff --git a/common/config b/common/config
index 1116cb99..8023273d 100644
--- a/common/config
+++ b/common/config
@@ -220,6 +220,7 @@ export DUPEREMOVE_PROG="$(type -P duperemove)"
 export CC_PROG="$(type -P cc)"
 export FSVERITY_PROG="$(type -P fsverity)"
 export OPENSSL_PROG="$(type -P openssl)"
+export ACCTON_PROG="$(type -P accton)"
 
 # use 'udevadm settle' or 'udevsettle' to wait for lv to be settled.
 # newer systems have udevadm command but older systems like RHEL5 don't.
diff --git a/common/rc b/common/rc
index 454f5ccf..7d6ea90c 100644
--- a/common/rc
+++ b/common/rc
@@ -4168,6 +4168,18 @@ _check_xfs_scrub_does_unicode() {
 	return 0
 }
 
+# Require the 'accton' userspace tool and CONFIG_BSD_PROCESS_ACCT=y.
+_require_bsd_process_accounting()
+{
+	_require_command "$ACCTON_PROG" accton
+	$ACCTON_PROG on &> $tmp.test_accton
+	cat $tmp.test_accton >> $seqres.full
+	if grep 'Function not implemented' $tmp.test_accton; then
+		_notrun "BSD process accounting support unavailable"
+	fi
+	$ACCTON_PROG off >> $seqres.full
+}
+
 init_rc
 
 ################################################################################
diff --git a/tests/generic/901 b/tests/generic/901
new file mode 100644
index 00000000..c59300f1
--- /dev/null
+++ b/tests/generic/901
@@ -0,0 +1,60 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright 2020 Google LLC
+#
+# FS QA Test No. 901
+#
+# Regression test for the bug fixed by commit 10a98cb16d80 ("xfs: clear
+# PF_MEMALLOC before exiting xfsaild thread").  If the bug exists, a kernel
+# WARNING should be triggered.  See the commit message for details.
+#
+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()
+{
+	$ACCTON_PROG off >> $seqres.full
+	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_fs generic
+_supported_os Linux
+_require_bsd_process_accounting
+_require_chattr S
+_require_test
+_require_scratch
+
+# To trigger the bug we must unmount a filesystem while BSD process accounting
+# is enabled.  The accounting file must also be located on a different
+# filesystem and have the sync flag set.
+
+accounting_file=$TEST_DIR/$seq
+
+rm -f $accounting_file
+touch $accounting_file
+$CHATTR_PROG +S $accounting_file
+
+_scratch_mkfs &>> $seqres.full
+$ACCTON_PROG $accounting_file >> $seqres.full
+_scratch_mount
+_scratch_unmount
+$ACCTON_PROG off >> $seqres.full
+
+echo "Silence is golden"
+
+status=0
+exit
diff --git a/tests/generic/901.out b/tests/generic/901.out
new file mode 100644
index 00000000..b206bc11
--- /dev/null
+++ b/tests/generic/901.out
@@ -0,0 +1,2 @@
+QA output created by 901
+Silence is golden
diff --git a/tests/generic/group b/tests/generic/group
index dc95b77b..61a67979 100644
--- a/tests/generic/group
+++ b/tests/generic/group
@@ -595,3 +595,4 @@
 591 auto quick rw pipe splice
 592 auto quick encrypt
 593 auto quick encrypt
+901 auto quick
-- 
2.26.0


             reply	other threads:[~2020-04-03  3:34 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-03  3:33 Eric Biggers [this message]
2020-04-03  3:56 ` [PATCH v2] generic: test PF_MEMALLOC interfering with accounting file write Darrick J. Wong
2020-04-03  4:02   ` Eric Biggers
2020-04-03  4:32     ` 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=20200403033355.140984-1-ebiggers@kernel.org \
    --to=ebiggers@kernel.org \
    --cc=fstests@vger.kernel.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.