All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: zlang@redhat.com
Cc: hch@lst.de, fstests@vger.kernel.org, linux-xfs@vger.kernel.org
Subject: [PATCH 14/13] xfs: test xfs_healer startup service
Date: Mon, 2 Mar 2026 16:47:39 -0800	[thread overview]
Message-ID: <20260303004739.GD13843@frogsfrogsfrogs> (raw)
In-Reply-To: <177249785709.483507.8373602184765043420.stgit@frogsfrogsfrogs>

From: Darrick J. Wong <djwong@kernel.org>

Make sure that xfs_healer_start can actually start up xfs_healer service
instances when a filesystem is mounted.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
 tests/xfs/1903     |  124 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/1903.out |    6 +++
 2 files changed, 130 insertions(+)
 create mode 100755 tests/xfs/1903
 create mode 100644 tests/xfs/1903.out

diff --git a/tests/xfs/1903 b/tests/xfs/1903
new file mode 100755
index 00000000000000..d71d75a6af3f9d
--- /dev/null
+++ b/tests/xfs/1903
@@ -0,0 +1,124 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2026 Oracle.  All Rights Reserved.
+#
+# FS QA Test No. 1903
+#
+# Check that the xfs_healer startup service starts the per-mount xfs_healer
+# service for the scratch filesystem.  IOWs, this is basic testing for the
+# xfs_healer systemd background services.
+#
+
+# unreliable_in_parallel: this appears to try to run healer services on all
+# mounted filesystems - that's a problem when there are a hundred other test
+# filesystems mounted running other tests...
+
+. ./common/preamble
+_begin_fstest auto selfhealing unreliable_in_parallel
+
+_cleanup()
+{
+	cd /
+	test -n "$new_healerstart_svc" &&
+		_systemd_unit_stop "$new_healerstart_svc"
+	test -n "$was_masked" && \
+		_systemd_unit_mask "$healer_svc" &>> $seqres.full
+	if [ -n "$new_svcfile" ]; then
+		rm -f "$new_svcfile"
+		systemctl daemon-reload
+	fi
+	rm -r -f $tmp.*
+}
+
+. ./common/filter
+. ./common/populate
+. ./common/fuzzy
+. ./common/systemd
+
+_require_systemd_is_running
+_require_systemd_unit_defined xfs_healer@.service
+_require_systemd_unit_defined xfs_healer_start.service
+_require_scratch
+_require_scrub
+_require_xfs_io_command "scrub"
+_require_xfs_spaceman_command "health"
+_require_populate_commands
+_require_command "$XFS_HEALER_PROG" "xfs_healer"
+_require_command $ATTR_PROG "attr"
+
+_xfs_skip_online_rebuild
+_xfs_skip_offline_rebuild
+
+orig_svcfile="$(_systemd_unit_path "xfs_healer_start.service")"
+test -f "$orig_svcfile" || \
+	_notrun "cannot find xfs_healer_start service file"
+
+new_svcdir="$(_systemd_runtime_dir)"
+test -d "$new_svcdir" || \
+	_notrun "cannot find runtime systemd service dir"
+
+# We need to make some local mods to the xfs_healer_start service definition
+# so we fork it and create a new service just for this test.
+new_healerstart_svc="xfs_healer_start_fstest.service"
+_systemd_unit_status "$new_healerstart_svc" 2>&1 | \
+	grep -E -q '(could not be found|Loaded: not-found)' || \
+	_notrun "systemd service \"$new_healerstart_svc\" found, will not mess with this"
+
+find_healer_trace() {
+	local path="$1"
+
+	sleep 2		# wait for delays in startup
+	$XFS_HEALER_PROG --supported "$path" 2>&1 | grep -q 'already running' || \
+		echo "cannot find evidence that xfs_healer is running for $path"
+}
+
+echo "Format and populate"
+_scratch_mkfs >> $seqres.full
+_scratch_mount
+_require_xfs_healer $SCRATCH_MNT
+
+# Configure the filesystem for background checks of the filesystem.
+$ATTR_PROG -R -s xfs:autofsck -V check $SCRATCH_MNT >> $seqres.full
+
+was_masked=
+healer_svc="$(_xfs_healer_svcname "$SCRATCH_MNT")"
+
+# Preserve the xfs_healer@ mask state -- we don't want this permanently
+# changing global state.
+if _systemd_unit_masked "$healer_svc"; then
+	_systemd_unit_unmask "$healer_svc" &>> $seqres.full
+	was_masked=1
+fi
+
+echo "Start healer on scratch FS"
+_systemd_unit_start "$healer_svc"
+find_healer_trace "$SCRATCH_MNT"
+_systemd_unit_stop "$healer_svc"
+
+new_svcfile="$new_svcdir/$new_healerstart_svc"
+cp "$orig_svcfile" "$new_svcfile"
+
+sed -e '/ExecStart=/d' -e '/BindPaths=/d' -e '/ExecCondition=/d' -i $new_svcfile
+cat >> "$new_svcfile" << ENDL
+[Service]
+ExecCondition=$XFS_HEALER_START_PROG --supported
+ExecStart=$XFS_HEALER_START_PROG
+ENDL
+_systemd_reload
+
+# Emit the results of our editing to the full log.
+systemctl cat "$new_healerstart_svc" >> $seqres.full
+
+echo "Start healer for everything"
+_systemd_unit_start "$new_healerstart_svc"
+find_healer_trace "$SCRATCH_MNT"
+
+echo "Restart healer for scratch FS"
+_scratch_cycle_mount
+find_healer_trace "$SCRATCH_MNT"
+
+echo "Healer testing done" | tee -a $seqres.full
+
+# success, all done
+status=0
+exit
diff --git a/tests/xfs/1903.out b/tests/xfs/1903.out
new file mode 100644
index 00000000000000..07810f60ca10c6
--- /dev/null
+++ b/tests/xfs/1903.out
@@ -0,0 +1,6 @@
+QA output created by 1903
+Format and populate
+Start healer on scratch FS
+Start healer for everything
+Restart healer for scratch FS
+Healer testing done

      parent reply	other threads:[~2026-03-03  0:47 UTC|newest]

Thread overview: 111+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-03  0:25 [PATCHBOMB v8] xfsprogs: autonomous self healing of filesystems Darrick J. Wong
2026-03-03  0:33 ` [PATCHSET " Darrick J. Wong
2026-03-03  0:34   ` [PATCH 01/26] libfrog: add a function to grab the path from an open fd and a file handle Darrick J. Wong
2026-03-03 15:44     ` Christoph Hellwig
2026-03-03  0:34   ` [PATCH 02/26] libfrog: create healthmon event log library functions Darrick J. Wong
2026-03-03 15:44     ` Christoph Hellwig
2026-03-03  0:34   ` [PATCH 03/26] libfrog: add support code for starting systemd services programmatically Darrick J. Wong
2026-03-03 15:45     ` Christoph Hellwig
2026-03-03 15:59       ` Darrick J. Wong
2026-03-05  2:39         ` Darrick J. Wong
2026-03-05 13:57           ` Christoph Hellwig
2026-03-03  0:34   ` [PATCH 04/26] libfrog: hoist a couple of service helper functions Darrick J. Wong
2026-03-03 15:45     ` Christoph Hellwig
2026-03-03  0:35   ` [PATCH 05/26] man2: document the healthmon ioctl Darrick J. Wong
2026-03-03 15:46     ` Christoph Hellwig
2026-03-03  0:35   ` [PATCH 06/26] man2: document the media verification ioctl Darrick J. Wong
2026-03-03 15:46     ` Christoph Hellwig
2026-03-03  0:35   ` [PATCH 07/26] xfs_io: monitor filesystem health events Darrick J. Wong
2026-03-03 15:46     ` Christoph Hellwig
2026-03-03  0:35   ` [PATCH 08/26] xfs_io: add a media verify command Darrick J. Wong
2026-03-03 15:46     ` Christoph Hellwig
2026-03-03  0:36   ` [PATCH 09/26] xfs_healer: create daemon to listen for health events Darrick J. Wong
2026-03-03 15:47     ` Christoph Hellwig
2026-03-03  0:36   ` [PATCH 10/26] xfs_healer: enable repairing filesystems Darrick J. Wong
2026-03-03 15:47     ` Christoph Hellwig
2026-03-03  0:36   ` [PATCH 11/26] xfs_healer: use getparents to look up file names Darrick J. Wong
2026-03-03 15:48     ` Christoph Hellwig
2026-03-03  0:36   ` [PATCH 12/26] xfs_healer: create a per-mount background monitoring service Darrick J. Wong
2026-03-03 15:48     ` Christoph Hellwig
2026-03-03  0:37   ` [PATCH 13/26] xfs_healer: create a service to start the per-mount healer service Darrick J. Wong
2026-03-03 15:49     ` Christoph Hellwig
2026-03-03 16:52       ` Darrick J. Wong
2026-03-03 16:54         ` Christoph Hellwig
2026-03-03 17:06           ` Darrick J. Wong
2026-03-03  0:37   ` [PATCH 14/26] xfs_healer: don't start service if kernel support unavailable Darrick J. Wong
2026-03-03 15:49     ` Christoph Hellwig
2026-03-03  0:37   ` [PATCH 15/26] xfs_healer: use the autofsck fsproperty to select mode Darrick J. Wong
2026-03-03 15:50     ` Christoph Hellwig
2026-03-03  0:38   ` [PATCH 16/26] xfs_healer: run full scrub after lost corruption events or targeted repair failure Darrick J. Wong
2026-03-03 15:50     ` Christoph Hellwig
2026-03-03  0:38   ` [PATCH 17/26] xfs_healer: use getmntent to find moved filesystems Darrick J. Wong
2026-03-03 15:51     ` Christoph Hellwig
2026-03-03 17:26       ` Darrick J. Wong
2026-03-04 13:03         ` Christoph Hellwig
2026-03-04 16:30           ` Darrick J. Wong
2026-03-05 14:00             ` Christoph Hellwig
2026-03-05 17:55               ` Darrick J. Wong
2026-03-03  0:38   ` [PATCH 18/26] xfs_healer: validate that repair fds point to the monitored fs Darrick J. Wong
2026-03-03 15:52     ` Christoph Hellwig
2026-03-03  0:38   ` [PATCH 19/26] xfs_healer: add a manual page Darrick J. Wong
2026-03-03 15:52     ` Christoph Hellwig
2026-03-03  0:39   ` [PATCH 20/26] xfs_scrub: use the verify media ioctl during phase 6 if possible Darrick J. Wong
2026-03-03 15:53     ` Christoph Hellwig
2026-03-03 16:59       ` Darrick J. Wong
2026-03-03  0:39   ` [PATCH 21/26] xfs_scrub: perform media scanning of the log region Darrick J. Wong
2026-03-03 15:54     ` Christoph Hellwig
2026-03-03  0:39   ` [PATCH 22/26] xfs_io: add listmount command Darrick J. Wong
2026-03-03 15:56     ` Christoph Hellwig
2026-03-03 17:08       ` Darrick J. Wong
2026-03-03  0:39   ` [PATCH 23/26] xfs_io: print systemd service names Darrick J. Wong
2026-03-03 15:57     ` Christoph Hellwig
2026-03-03 17:29       ` Darrick J. Wong
2026-03-04 13:04         ` Christoph Hellwig
2026-03-04 16:35           ` Darrick J. Wong
2026-03-05 13:55             ` Christoph Hellwig
2026-03-05 22:00               ` Darrick J. Wong
2026-03-06 14:20                 ` Christoph Hellwig
2026-03-06 15:58                   ` Darrick J. Wong
2026-03-03  0:40   ` [PATCH 24/26] mkfs: enable online repair if all backrefs are enabled Darrick J. Wong
2026-03-03 15:58     ` Christoph Hellwig
2026-03-03 17:32       ` Darrick J. Wong
2026-03-05 22:22         ` Darrick J. Wong
2026-03-03  0:40   ` [PATCH 25/26] debian: enable xfs_healer on the root filesystem by default Darrick J. Wong
2026-03-03 15:58     ` Christoph Hellwig
2026-03-03 17:14       ` Darrick J. Wong
2026-03-04 13:01         ` Christoph Hellwig
2026-03-05 22:10           ` Darrick J. Wong
2026-03-05 22:18             ` Darrick J. Wong
2026-03-03  0:40   ` [PATCH 26/26] debian/control: listify the build dependencies Darrick J. Wong
2026-03-03 15:58     ` Christoph Hellwig
2026-03-03 17:09       ` Darrick J. Wong
2026-03-03  0:33 ` [PATCHSET v8 1/2] fstests: test generic file IO error reporting Darrick J. Wong
2026-03-03  0:40   ` [PATCH 1/1] generic: test fsnotify filesystem " Darrick J. Wong
2026-03-03  9:21     ` Amir Goldstein
2026-03-03 14:51       ` Christoph Hellwig
2026-03-03 14:56         ` Amir Goldstein
2026-03-04 10:10         ` Jan Kara
2026-03-03 14:54     ` Christoph Hellwig
2026-03-03 16:06       ` Gabriel Krisman Bertazi
2026-03-03 16:12         ` Christoph Hellwig
2026-03-03 16:38           ` Darrick J. Wong
2026-03-03 16:49       ` Darrick J. Wong
2026-03-03 16:53         ` Christoph Hellwig
2026-03-03 17:59           ` Darrick J. Wong
2026-03-03  0:33 ` [PATCHSET v8 2/2] fstests: autonomous self healing of filesystems Darrick J. Wong
2026-03-03  0:41   ` [PATCH 01/13] xfs: test health monitoring code Darrick J. Wong
2026-03-09 17:21     ` Zorro Lang
2026-03-09 18:03       ` Darrick J. Wong
2026-03-03  0:41   ` [PATCH 02/13] xfs: test for metadata corruption error reporting via healthmon Darrick J. Wong
2026-03-03  0:41   ` [PATCH 03/13] xfs: test io " Darrick J. Wong
2026-03-03  0:41   ` [PATCH 04/13] xfs: set up common code for testing xfs_healer Darrick J. Wong
2026-03-03  0:42   ` [PATCH 05/13] xfs: test xfs_healer's event handling Darrick J. Wong
2026-03-03  0:42   ` [PATCH 06/13] xfs: test xfs_healer can fix a filesystem Darrick J. Wong
2026-03-03  0:42   ` [PATCH 07/13] xfs: test xfs_healer can report file I/O errors Darrick J. Wong
2026-03-03  0:42   ` [PATCH 08/13] xfs: test xfs_healer can report file media errors Darrick J. Wong
2026-03-03  0:43   ` [PATCH 09/13] xfs: test xfs_healer can report filesystem shutdowns Darrick J. Wong
2026-03-03  0:43   ` [PATCH 10/13] xfs: test xfs_healer can initiate full filesystem repairs Darrick J. Wong
2026-03-03  0:43   ` [PATCH 11/13] xfs: test xfs_healer can follow mount moves Darrick J. Wong
2026-03-03  0:43   ` [PATCH 12/13] xfs: test xfs_healer wont repair the wrong filesystem Darrick J. Wong
2026-03-03  0:44   ` [PATCH 13/13] xfs: test xfs_healer background service Darrick J. Wong
2026-03-03  0:47   ` Darrick J. Wong [this message]

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=20260303004739.GD13843@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 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.