All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: zlang@redhat.com, djwong@kernel.org
Cc: Allison Henderson <allison.henderson@oracle.com>,
	Catherine Hoang <catherine.hoang@oracle.com>,
	linux-xfs@vger.kernel.org, fstests@vger.kernel.org, guan@eryu.me
Subject: [PATCH 08/11] common: add helpers for parent pointer tests
Date: Thu, 06 Apr 2023 12:43:47 -0700	[thread overview]
Message-ID: <168080829112.618488.6039839555651751713.stgit@frogsfrogsfrogs> (raw)
In-Reply-To: <168080829003.618488.1769223982280364994.stgit@frogsfrogsfrogs>

From: Allison Henderson <allison.henderson@oracle.com>

Add helper functions in common/parent to parse and verify parent
pointers. Also add functions to check that mkfs, kernel, and xfs_io
support parent pointers.

Signed-off-by: Allison Henderson <allison.henderson@oracle.com>
Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
[djwong: add license and copyright, dont _fail tests immediately, make
 sure the pptr-generated paths match the dir-generated paths]
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 common/parent |  209 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 common/rc     |    3 +
 common/xfs    |   12 +++
 3 files changed, 224 insertions(+)
 create mode 100644 common/parent


diff --git a/common/parent b/common/parent
new file mode 100644
index 0000000000..f849e4b27c
--- /dev/null
+++ b/common/parent
@@ -0,0 +1,209 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2022-2023, Oracle and/or its affiliates.  All Rights Reserved.
+#
+# Parent pointer common functions
+#
+
+#
+# parse_parent_pointer parents parent_inode parent_pointer_name
+#
+# Given a list of parent pointers, find the record that matches
+# the given inode and filename
+#
+# inputs:
+# parents	: A list of parent pointers in the format of:
+#		  inode/generation/name_length/name
+# parent_inode	: The parent inode to search for
+# parent_name	: The parent name to search for
+#
+# outputs:
+# PPINO         : Parent pointer inode
+# PPGEN         : Parent pointer generation
+# PPNAME        : Parent pointer name
+# PPNAME_LEN    : Parent pointer name length
+#
+_parse_parent_pointer()
+{
+	local parents=$1
+	local pino=$2
+	local parent_pointer_name=$3
+
+	local found=0
+
+	# Find the entry that has the same inode as the parent
+	# and parse out the entry info
+	while IFS=\/ read PPINO PPGEN PPNAME_LEN PPNAME; do
+		if [ "$PPINO" != "$pino" ]; then
+			continue
+		fi
+
+		if [ "$PPNAME" != "$parent_pointer_name" ]; then
+			continue
+		fi
+
+		found=1
+		break
+	done <<< $(echo "$parents")
+
+	# Check to see if we found anything
+	# We do not fail the test because we also use this
+	# routine to verify when parent pointers should
+	# be removed or updated  (ie a rename or a move
+	# operation changes your parent pointer)
+	if [ $found -eq "0" ]; then
+		return 1
+	fi
+
+	# Verify the parent pointer name length is correct
+	if [ "$PPNAME_LEN" -ne "${#parent_pointer_name}" ]
+	then
+		echo "*** Bad parent pointer:"\
+			"name:$PPNAME, namelen:$PPNAME_LEN"
+	fi
+
+	#return sucess
+	return 0
+}
+
+#
+# _verify_parent parent_path parent_pointer_name child_path
+#
+# Verify that the given child path lists the given parent as a parent pointer
+# and that the parent pointer name matches the given name
+#
+# Examples:
+#
+# #simple example
+# mkdir testfolder1
+# touch testfolder1/file1
+# verify_parent testfolder1 file1 testfolder1/file1
+#
+# # In this above example, we want to verify that "testfolder1"
+# # appears as a parent pointer of "testfolder1/file1".  Additionally
+# # we verify that the name record of the parent pointer is "file1"
+#
+#
+# #hardlink example
+# mkdir testfolder1
+# mkdir testfolder2
+# touch testfolder1/file1
+# ln testfolder1/file1 testfolder2/file1_ln
+# verify_parent testfolder2 file1_ln testfolder1/file1
+#
+# # In this above example, we want to verify that "testfolder2"
+# # appears as a parent pointer of "testfolder1/file1".  Additionally
+# # we verify that the name record of the parent pointer is "file1_ln"
+#
+_verify_parent()
+{
+	local parent_path=$1
+	local parent_pointer_name=$2
+	local child_path=$3
+
+	local parent_ppath="$parent_path/$parent_pointer_name"
+
+	# Verify parent exists
+	if [ ! -d $SCRATCH_MNT/$parent_path ]; then
+		echo "$SCRATCH_MNT/$parent_path not found"
+	else
+		echo "*** $parent_path OK"
+	fi
+
+	# Verify child exists
+	if [ ! -f $SCRATCH_MNT/$child_path ]; then
+		echo "$SCRATCH_MNT/$child_path not found"
+	else
+		echo "*** $child_path OK"
+	fi
+
+	# Verify the parent pointer name exists as a child of the parent
+	if [ ! -f $SCRATCH_MNT/$parent_ppath ]; then
+		echo "$SCRATCH_MNT/$parent_ppath not found"
+	else
+		echo "*** $parent_ppath OK"
+	fi
+
+	# Get the inodes of both parent and child
+	pino="$(stat -c '%i' $SCRATCH_MNT/$parent_path)"
+	cino="$(stat -c '%i' $SCRATCH_MNT/$child_path)"
+
+	# Get all the parent pointers of the child
+	parents=($($XFS_IO_PROG -x -c \
+	 "parent -f -i $pino -n $parent_pointer_name" $SCRATCH_MNT/$child_path))
+	if [[ $? != 0 ]]; then
+		 echo "No parent pointers found for $child_path"
+	fi
+
+	# Parse parent pointer output.
+	# This sets PPINO PPGEN PPNAME PPNAME_LEN
+	_parse_parent_pointer $parents $pino $parent_pointer_name
+
+	# If we didnt find one, bail out
+	if [ $? -ne 0 ]; then
+		echo "No parent pointer record found for $parent_path"\
+			"in $child_path"
+	fi
+
+	# Verify the inode generated by the parent pointer name is
+	# the same as the child inode
+	pppino="$(stat -c '%i' $SCRATCH_MNT/$parent_ppath)"
+	if [ $cino -ne $pppino ]
+	then
+		echo "Bad parent pointer name value for $child_path."\
+			"$SCRATCH_MNT/$parent_ppath belongs to inode $PPPINO,"\
+			"but should be $cino"
+	fi
+
+	# Make sure path printing works by checking that the paths returned
+	# all point to the same inode.
+	local tgt="$SCRATCH_MNT/$child_path"
+	$XFS_IO_PROG -x -c 'parent -p' "$tgt" | while read pptr_path; do
+		test "$tgt" -ef "$pptr_path" || \
+			echo "$tgt parent pointer $pptr_path should be the same file"
+	done
+
+	echo "*** Verified parent pointer:"\
+			"name:$PPNAME, namelen:$PPNAME_LEN"
+	echo "*** Parent pointer OK for child $child_path"
+}
+
+#
+# _verify_parent parent_pointer_name pino child_path
+#
+# Verify that the given child path contains no parent pointer entry
+# for the given inode and file name
+#
+_verify_no_parent()
+{
+	local parent_pname=$1
+	local pino=$2
+	local child_path=$3
+
+	# Verify child exists
+	if [ ! -f $SCRATCH_MNT/$child_path ]; then
+		echo "$SCRATCH_MNT/$child_path not found"
+	else
+		echo "*** $child_path OK"
+	fi
+
+	# Get all the parent pointers of the child
+	local parents=($($XFS_IO_PROG -x -c \
+	 "parent -f -i $pino -n $parent_pname" $SCRATCH_MNT/$child_path))
+	if [[ $? != 0 ]]; then
+		return 0
+	fi
+
+	# Parse parent pointer output.
+	# This sets PPINO PPGEN PPNAME PPNAME_LEN
+	_parse_parent_pointer $parents $pino $parent_pname
+
+	# If we didnt find one, return sucess
+	if [ $? -ne 0 ]; then
+		return 0
+	fi
+
+	echo "Parent pointer entry found where none should:"\
+			"inode:$PPINO, gen:$PPGEN,"
+			"name:$PPNAME, namelen:$PPNAME_LEN"
+}
diff --git a/common/rc b/common/rc
index a7e7d1f25b..bf53d62aac 100644
--- a/common/rc
+++ b/common/rc
@@ -2565,6 +2565,9 @@ _require_xfs_io_command()
 		echo $testio | grep -q "invalid option" && \
 			_notrun "xfs_io $command support is missing"
 		;;
+	"parent")
+		testio=`$XFS_IO_PROG -x -c "parent" $TEST_DIR 2>&1`
+		;;
 	"pwrite")
 		# -N (RWF_NOWAIT) only works with direct vectored I/O writes
 		local pwrite_opts=" "
diff --git a/common/xfs b/common/xfs
index b211c7a6d8..81ac143374 100644
--- a/common/xfs
+++ b/common/xfs
@@ -1791,3 +1791,15 @@ _xfs_discard_max_offset_kb()
 	$XFS_IO_PROG -c 'statfs' "$1" | \
 		awk '{g[$1] = $3} END {print (g["geom.bsize"] * g["geom.datablocks"] / 1024)}'
 }
+
+# this test requires the xfs parent pointers feature
+#
+_require_xfs_parent()
+{
+	_scratch_mkfs_xfs_supported -n parent > /dev/null 2>&1 \
+		|| _notrun "mkfs.xfs does not support parent pointers"
+	_scratch_mkfs_xfs -n parent > /dev/null 2>&1
+	_try_scratch_mount >/dev/null 2>&1 \
+		|| _notrun "kernel does not support parent pointers"
+	_scratch_unmount
+}


  parent reply	other threads:[~2023-04-06 19:44 UTC|newest]

Thread overview: 123+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-06 18:10 [PATCHSET DELUGE v11] xfs: Parent Pointers Darrick J. Wong
2023-04-06 19:07 ` Darrick J. Wong
2023-04-06 19:13 ` [PATCHSET v11 00/12] xfs: name-value xattr lookups Darrick J. Wong
2023-04-06 19:16   ` [PATCH 01/12] xfs: check opcode and iovec count match in xlog_recover_attri_commit_pass2 Darrick J. Wong
2023-04-06 19:17   ` [PATCH 02/12] xfs: make xfs_attr_set require XFS_DA_OP_REMOVE Darrick J. Wong
2023-04-06 19:17   ` [PATCH 03/12] xfs: allow xattr matching on name and value for local/sf attrs Darrick J. Wong
2023-04-06 19:17   ` [PATCH 04/12] xfs: preserve NVLOOKUP in xfs_attr_set Darrick J. Wong
2023-04-06 19:17   ` [PATCH 05/12] xfs: restructure xfs_attr_complete_op a bit Darrick J. Wong
2023-04-06 19:18   ` [PATCH 06/12] xfs: use helpers to extract xattr op from opflags Darrick J. Wong
2023-04-06 19:18   ` [PATCH 07/12] xfs: validate recovered name buffers when recovering xattr items Darrick J. Wong
2023-04-06 19:18   ` [PATCH 08/12] xfs: always set args->value in xfs_attri_item_recover Darrick J. Wong
2023-04-06 19:18   ` [PATCH 09/12] xfs: use local variables for name and value length in _attri_commit_pass2 Darrick J. Wong
2023-04-06 19:19   ` [PATCH 10/12] xfs: log NVLOOKUP xattr removal operations Darrick J. Wong
2023-04-06 19:19   ` [PATCH 11/12] xfs: log NVLOOKUP xattr setting operations Darrick J. Wong
2023-04-06 19:19   ` [PATCH 12/12] xfs: log NVLOOKUP xattr nvreplace operations Darrick J. Wong
2023-04-06 19:14 ` [PATCHSET v11 0/3] xfs: hold ILOCK during deferred dir ops Darrick J. Wong
2023-04-06 19:19   ` [PATCH 1/3] xfs: Hold inode locks in xfs_ialloc Darrick J. Wong
2023-04-06 19:20   ` [PATCH 2/3] xfs: Hold inode locks in xfs_trans_alloc_dir Darrick J. Wong
2023-04-06 19:20   ` [PATCH 3/3] xfs: Hold inode locks in xfs_rename Darrick J. Wong
2023-04-06 19:14 ` [PATCHSET v11 00/23] xfs: Parent Pointers Darrick J. Wong
2023-04-06 19:20   ` [PATCH 01/23] xfs: Expose init_xattrs in xfs_create_tmpfile Darrick J. Wong
2023-04-06 19:20   ` [PATCH 02/23] xfs: Increase XFS_DEFER_OPS_NR_INODES to 5 Darrick J. Wong
2023-04-06 19:21   ` [PATCH 03/23] xfs: Increase XFS_QM_TRANS_MAXDQS " Darrick J. Wong
2023-04-06 19:21   ` [PATCH 04/23] xfs: add parent pointer support to attribute code Darrick J. Wong
2023-04-06 19:21   ` [PATCH 05/23] xfs: define parent pointer ondisk extended attribute format Darrick J. Wong
2023-04-06 19:21   ` [PATCH 06/23] xfs: add parent pointer validator functions Darrick J. Wong
2023-04-06 19:22   ` [PATCH 07/23] xfs: extend transaction reservations for parent attributes Darrick J. Wong
2023-04-06 19:22   ` [PATCH 08/23] xfs: parent pointer attribute creation Darrick J. Wong
2023-04-06 19:22   ` [PATCH 09/23] xfs: add parent attributes to link Darrick J. Wong
2023-04-06 19:23   ` [PATCH 10/23] xfs: add parent attributes to symlink Darrick J. Wong
2023-04-06 19:23   ` [PATCH 11/23] xfs: remove parent pointers in unlink Darrick J. Wong
2023-04-06 19:23   ` [PATCH 12/23] xfs: Indent xfs_rename Darrick J. Wong
2023-04-06 19:23   ` [PATCH 13/23] xfs: Add parent pointers to rename Darrick J. Wong
2023-04-06 19:24   ` [PATCH 14/23] xfs: Add parent pointers to xfs_cross_rename Darrick J. Wong
2023-04-06 19:24   ` [PATCH 15/23] xfs: Add helper function xfs_attr_list_context_init Darrick J. Wong
2023-04-06 19:24   ` [PATCH 16/23] xfs: Filter XFS_ATTR_PARENT for getfattr Darrick J. Wong
2023-04-06 19:24   ` [PATCH 17/23] xfs: pass the attr value to put_listent when possible Darrick J. Wong
2023-04-06 19:25   ` [PATCH 18/23] xfs: add a libxfs header file for staging new ioctls Darrick J. Wong
2023-04-06 19:25   ` [PATCH 19/23] xfs: Add parent pointer ioctl Darrick J. Wong
2023-04-06 19:25   ` [PATCH 20/23] xfs: fix unit conversion error in xfs_log_calc_max_attrsetm_res Darrick J. Wong
2023-04-06 19:25   ` [PATCH 21/23] xfs: drop compatibility minimum log size computations for reflink Darrick J. Wong
2023-04-06 19:26   ` [PATCH 22/23] xfs: don't remove the attr fork when parent pointers are enabled Darrick J. Wong
2023-04-06 19:26   ` [PATCH 23/23] xfs: Add the parent pointer support to the superblock version 5 Darrick J. Wong
2023-04-06 19:14 ` [PATCHSET v11 0/3] xfs: online repair of directories Darrick J. Wong
2023-04-06 19:26   ` [PATCH 1/3] xfs: reconstruct directories from parent pointers Darrick J. Wong
2023-04-06 19:26   ` [PATCH 2/3] xfs: add hooks to do directory updates Darrick J. Wong
2023-04-06 19:27   ` [PATCH 3/3] xfs: compare generated and existing dirents Darrick J. Wong
2023-04-06 19:14 ` [PATCHSET v11 0/2] xfs: online checking of parent pointers Darrick J. Wong
2023-04-06 19:27   ` [PATCH 1/2] xfs: scrub " Darrick J. Wong
2023-04-06 19:27   ` [PATCH 2/2] xfs: deferred scrub of " Darrick J. Wong
2023-04-06 19:15 ` [PATCHSET v11 0/3] xfs: online checking " Darrick J. Wong
2023-04-06 19:27   ` [PATCH 1/3] xfs: repair parent pointers by scanning directories Darrick J. Wong
2023-04-06 19:28   ` [PATCH 2/3] xfs: repair parent pointers with live scan hooks Darrick J. Wong
2023-04-06 19:28   ` [PATCH 3/3] xfs: compare generated and existing parent pointers Darrick J. Wong
2023-04-06 19:15 ` [PATCHSET v11 0/2] xfs: online checking of directories Darrick J. Wong
2023-04-06 19:28   ` [PATCH 1/2] xfs: check dirents have parent pointers Darrick J. Wong
2023-04-06 19:28   ` [PATCH 2/2] xfs: deferred scrub of dirents Darrick J. Wong
2023-04-06 19:15 ` [PATCHSET v11 00/10] xfs: name-value xattr lookups Darrick J. Wong
2023-04-06 19:29   ` [PATCH 01/10] xfs: make xfs_attr_set require XFS_DA_OP_REMOVE Darrick J. Wong
2023-04-06 19:29   ` [PATCH 02/10] xfs: allow xattr matching on name and value for local/sf attrs Darrick J. Wong
2023-04-06 19:29   ` [PATCH 03/10] xfs: preserve NVLOOKUP in xfs_attr_set Darrick J. Wong
2023-04-06 19:30   ` [PATCH 04/10] xfs: restructure xfs_attr_complete_op a bit Darrick J. Wong
2023-04-06 19:30   ` [PATCH 05/10] xfs: use helpers to extract xattr op from opflags Darrick J. Wong
2023-04-06 19:30   ` [PATCH 06/10] xfs: log NVLOOKUP xattr removal operations Darrick J. Wong
2023-04-06 19:30   ` [PATCH 07/10] xfs: log NVLOOKUP xattr setting operations Darrick J. Wong
2023-04-06 19:31   ` [PATCH 08/10] xfs: log NVLOOKUP xattr nvreplace operations Darrick J. Wong
2023-04-06 19:31   ` [PATCH 09/10] xfs_logprint: dump new attr log item fields Darrick J. Wong
2023-04-06 19:31   ` [PATCH 10/10] xfs_logprint: print missing attri header fields Darrick J. Wong
2023-04-06 19:15 ` [PATCHSET v11 00/32] xfsprogs: Parent Pointers Darrick J. Wong
2023-04-06 19:31   ` [PATCH 01/32] xfsprogs: Increase XFS_DEFER_OPS_NR_INODES to 5 Darrick J. Wong
2023-04-06 19:32   ` [PATCH 02/32] xfs: add parent pointer support to attribute code Darrick J. Wong
2023-04-06 19:32   ` [PATCH 03/32] xfs: define parent pointer ondisk extended attribute format Darrick J. Wong
2023-04-06 19:32   ` [PATCH 04/32] xfs: add parent pointer validator functions Darrick J. Wong
2023-04-06 19:32   ` [PATCH 05/32] xfs: extend transaction reservations for parent attributes Darrick J. Wong
2023-04-06 19:33   ` [PATCH 06/32] xfs: parent pointer attribute creation Darrick J. Wong
2023-04-06 19:33   ` [PATCH 07/32] xfs: add parent attributes to link Darrick J. Wong
2023-04-06 19:33   ` [PATCH 08/32] xfs: add parent attributes to symlink Darrick J. Wong
2023-04-06 19:33   ` [PATCH 09/32] xfs: remove parent pointers in unlink Darrick J. Wong
2023-04-06 19:34   ` [PATCH 10/32] xfs: Add parent pointers to rename Darrick J. Wong
2023-04-06 19:34   ` [PATCH 11/32] xfsprogs: pass the attr value to put_listent when possible Darrick J. Wong
2023-04-06 19:34   ` [PATCH 12/32] xfs: add a libxfs header file for staging new ioctls Darrick J. Wong
2023-04-06 19:34   ` [PATCH 13/32] xfs: Add parent pointer ioctl Darrick J. Wong
2023-04-06 19:35   ` [PATCH 14/32] xfs: fix unit conversion error in xfs_log_calc_max_attrsetm_res Darrick J. Wong
2023-04-06 19:35   ` [PATCH 15/32] xfs: drop compatibility minimum log size computations for reflink Darrick J. Wong
2023-04-06 19:35   ` [PATCH 16/32] xfs: don't remove the attr fork when parent pointers are enabled Darrick J. Wong
2023-04-06 19:35   ` [PATCH 17/32] xfs: Add the parent pointer support to the superblock version 5 Darrick J. Wong
2023-04-06 19:36   ` [PATCH 18/32] libfrog: add parent pointer support code Darrick J. Wong
2023-04-06 19:36   ` [PATCH 19/32] xfs_io: adapt parent command to new parent pointer ioctls Darrick J. Wong
2023-04-06 19:36   ` [PATCH 20/32] xfs_io: Add i, n and f flags to parent command Darrick J. Wong
2023-04-06 19:37   ` [PATCH 21/32] xfs_logprint: decode parent pointers in ATTRI items fully Darrick J. Wong
2023-04-06 19:37   ` [PATCH 22/32] xfs_scrub: use parent pointers when possible to report file operations Darrick J. Wong
2023-04-06 19:37   ` [PATCH 23/32] xfs_db: report parent bit on xattrs Darrick J. Wong
2023-04-06 19:37   ` [PATCH 24/32] xfs_db: report parent pointers embedded in xattrs Darrick J. Wong
2023-04-06 19:38   ` [PATCH 25/32] xfs_db: obfuscate dirent and parent pointer names consistently Darrick J. Wong
2023-04-06 19:38   ` [PATCH 26/32] xfs_db: hoist name obfuscation code out of metadump.c Darrick J. Wong
2023-04-06 19:38   ` [PATCH 27/32] xfs_db: create dirents and xattrs with colliding names Darrick J. Wong
2023-04-06 19:38   ` [PATCH 28/32] xfs_db: add a parents command to list the parents of a file Darrick J. Wong
2023-04-06 19:39   ` [PATCH 29/32] libxfs: create new files with attr forks if necessary Darrick J. Wong
2023-04-06 19:39   ` [PATCH 30/32] xfsprogs: Fix default superblock attr bits Darrick J. Wong
2023-04-06 19:39   ` [PATCH 31/32] mkfs: Add parent pointers during protofile creation Darrick J. Wong
2023-04-06 19:39   ` [PATCH 32/32] mkfs: enable formatting with parent pointers Darrick J. Wong
2023-04-06 19:16 ` [PATCHSET v11 0/7] xfs_repair: support " Darrick J. Wong
2023-04-06 19:40   ` [PATCH 1/7] xfs_repair: build a parent pointer index Darrick J. Wong
2023-04-06 19:40   ` [PATCH 2/7] xfs_repair: move the global dirent name store to a separate object Darrick J. Wong
2023-04-06 19:40   ` [PATCH 3/7] xfs_repair: deduplicate strings stored in string blob Darrick J. Wong
2023-04-06 19:40   ` [PATCH 4/7] xfs_repair: check parent pointers Darrick J. Wong
2023-04-06 19:41   ` [PATCH 5/7] xfs_repair: dump garbage parent pointer attributes Darrick J. Wong
2023-04-06 19:41   ` [PATCH 6/7] xfs_repair: update ondisk parent pointer records Darrick J. Wong
2023-04-06 19:41   ` [PATCH 7/7] xfs_repair: wipe ondisk parent pointers when there are none Darrick J. Wong
2023-04-06 19:16 ` [PATCHSET v11 00/11] fstests: adjust tests for xfs parent pointers Darrick J. Wong
2023-04-06 19:41   ` [PATCH 01/11] xfs/206: filter out the parent= status from mkfs Darrick J. Wong
2023-04-06 19:42   ` [PATCH 02/11] xfs/122: update for parent pointers Darrick J. Wong
2023-04-06 19:42   ` [PATCH 03/11] populate: create hardlinks " Darrick J. Wong
2023-04-06 19:42   ` [PATCH 04/11] xfs/021: adapt golden output files " Darrick J. Wong
2023-04-06 19:43   ` [PATCH 05/11] generic/050: adapt " Darrick J. Wong
2023-04-06 19:43   ` [PATCH 06/11] xfs/018: disable parent pointers for this test Darrick J. Wong
2023-04-06 19:43   ` [PATCH 07/11] xfs/306: fix formatting failures with parent pointers Darrick J. Wong
2023-04-06 19:43   ` Darrick J. Wong [this message]
2023-04-06 19:44   ` [PATCH 09/11] xfs: add parent pointer test Darrick J. Wong
2023-04-06 19:44   ` [PATCH 10/11] xfs: add multi link " Darrick J. Wong
2023-04-06 19:44   ` [PATCH 11/11] xfs: add parent pointer inject test Darrick J. Wong
2023-05-26  2:00 [PATCHSET RFC v12.0 00/11] fstests: adjust tests for xfs parent pointers Darrick J. Wong
2023-05-26  2:04 ` [PATCH 08/11] common: add helpers for parent pointer tests Darrick J. Wong
2023-12-31 19:59 [PATCHSET v13.0 1/3] fstests: adjust tests for xfs parent pointers Darrick J. Wong
2023-12-27 13:48 ` [PATCH 08/11] common: add helpers for parent pointer tests 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=168080829112.618488.6039839555651751713.stgit@frogsfrogsfrogs \
    --to=djwong@kernel.org \
    --cc=allison.henderson@oracle.com \
    --cc=catherine.hoang@oracle.com \
    --cc=fstests@vger.kernel.org \
    --cc=guan@eryu.me \
    --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.