* [PATCH v2 0/4] xfstests: add parent pointer tests @ 2022-10-12 1:38 Catherine Hoang 2022-10-12 1:38 ` [PATCH v2 1/4] common: add helpers for " Catherine Hoang ` (3 more replies) 0 siblings, 4 replies; 10+ messages in thread From: Catherine Hoang @ 2022-10-12 1:38 UTC (permalink / raw) To: linux-xfs, fstests Hi all, These are the tests for Allison's parent pointer series: https://lore.kernel.org/linux-xfs/20220922054458.40826-1-allison.henderson@oracle.com/ These tests cover basic parent pointer operations, multiple links, and error inject. This patch also adds a new parent group and parent common functions. v1->v2: - Print name and length of bad parent pointer - Remove line that explicitly turns on LARP mode - Remove unnecessary empty lines - Split single patch into multiple patches - Add _require_xfs_parent function - Check that mkfs/kernel/xfs_io supports parent pointers Comments and feedback appreciated! Catherine Allison Henderson (4): common: add helpers for parent pointer tests xfs: add parent pointer test xfs: add multi link parent pointer test xfs: add parent pointer inject test common/parent | 198 +++++++++ common/rc | 3 + common/xfs | 12 + doc/group-names.txt | 1 + tests/xfs/554 | 125 ++++++ tests/xfs/554.out | 59 +++ tests/xfs/555 | 96 +++++ tests/xfs/555.out | 1002 +++++++++++++++++++++++++++++++++++++++++++ tests/xfs/556 | 110 +++++ tests/xfs/556.out | 14 + 10 files changed, 1620 insertions(+) create mode 100644 common/parent create mode 100755 tests/xfs/554 create mode 100644 tests/xfs/554.out create mode 100755 tests/xfs/555 create mode 100644 tests/xfs/555.out create mode 100755 tests/xfs/556 create mode 100644 tests/xfs/556.out -- 2.25.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/4] common: add helpers for parent pointer tests 2022-10-12 1:38 [PATCH v2 0/4] xfstests: add parent pointer tests Catherine Hoang @ 2022-10-12 1:38 ` Catherine Hoang 2022-10-12 1:38 ` [PATCH v2 2/4] xfs: add parent pointer test Catherine Hoang ` (2 subsequent siblings) 3 siblings, 0 replies; 10+ messages in thread From: Catherine Hoang @ 2022-10-12 1:38 UTC (permalink / raw) To: linux-xfs, fstests 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> --- common/parent | 198 ++++++++++++++++++++++++++++++++++++++++++++++++++ common/rc | 3 + common/xfs | 12 +++ 3 files changed, 213 insertions(+) create mode 100644 common/parent diff --git a/common/parent b/common/parent new file mode 100644 index 00000000..a0ba7d92 --- /dev/null +++ b/common/parent @@ -0,0 +1,198 @@ +# +# 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 + _fail "$SCRATCH_MNT/$parent_path not found" + else + echo "*** $parent_path OK" + fi + + # Verify child exists + if [ ! -f $SCRATCH_MNT/$child_path ]; then + _fail "$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 + _fail "$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 + _fail "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 + _fail "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 + _fail "Bad parent pointer name value for $child_path."\ + "$SCRATCH_MNT/$parent_ppath belongs to inode $PPPINO,"\ + "but should be $cino" + fi + + 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 + _fail "$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 + + _fail "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 a25cbcd0..91b70a76 100644 --- a/common/rc +++ b/common/rc @@ -2539,6 +2539,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 ae81b3fe..7fd7cc7a 100644 --- a/common/xfs +++ b/common/xfs @@ -1399,3 +1399,15 @@ _xfs_filter_mkfs() print STDOUT "realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX\n"; }' } + +# 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 +} -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 2/4] xfs: add parent pointer test 2022-10-12 1:38 [PATCH v2 0/4] xfstests: add parent pointer tests Catherine Hoang 2022-10-12 1:38 ` [PATCH v2 1/4] common: add helpers for " Catherine Hoang @ 2022-10-12 1:38 ` Catherine Hoang 2022-10-12 3:02 ` Zorro Lang 2022-10-12 1:38 ` [PATCH v2 3/4] xfs: add multi link " Catherine Hoang 2022-10-12 1:38 ` [PATCH v2 4/4] xfs: add parent pointer inject test Catherine Hoang 3 siblings, 1 reply; 10+ messages in thread From: Catherine Hoang @ 2022-10-12 1:38 UTC (permalink / raw) To: linux-xfs, fstests From: Allison Henderson <allison.henderson@oracle.com> Add a test to verify basic parent pointers operations (create, move, link, unlink, rename, overwrite). Signed-off-by: Allison Henderson <allison.henderson@oracle.com> Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com> --- doc/group-names.txt | 1 + tests/xfs/554 | 125 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/554.out | 59 +++++++++++++++++++++ 3 files changed, 185 insertions(+) create mode 100755 tests/xfs/554 create mode 100644 tests/xfs/554.out diff --git a/doc/group-names.txt b/doc/group-names.txt index ef411b5e..8e35c699 100644 --- a/doc/group-names.txt +++ b/doc/group-names.txt @@ -77,6 +77,7 @@ nfs4_acl NFSv4 access control lists nonsamefs overlayfs layers on different filesystems online_repair online repair functionality tests other dumping ground, do not add more tests to this group +parent Parent pointer tests pattern specific IO pattern tests perms access control and permission checking pipe pipe functionality diff --git a/tests/xfs/554 b/tests/xfs/554 new file mode 100755 index 00000000..26914e4c --- /dev/null +++ b/tests/xfs/554 @@ -0,0 +1,125 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2022, Oracle and/or its affiliates. All Rights Reserved. +# +# FS QA Test 554 +# +# simple parent pointer test +# + +. ./common/preamble +_begin_fstest auto quick parent + +cleanup() +{ + cd / + rm -f $tmp.* +} + +full() +{ + echo "" >>$seqres.full + echo "*** $* ***" >>$seqres.full + echo "" >>$seqres.full +} + +# get standard environment, filters and checks +. ./common/filter +. ./common/reflink +. ./common/inject +. ./common/parent + +# Modify as appropriate +_supported_fs xfs +_require_scratch +_require_xfs_sysfs debug/larp +_require_xfs_io_error_injection "larp" +_require_xfs_parent +_require_xfs_io_command "parent" + +# real QA test starts here + +# Create a directory tree using a protofile and +# make sure all inodes created have parent pointers + +protofile=$tmp.proto + +cat >$protofile <<EOF +DUMMY1 +0 0 +: root directory +d--777 3 1 +: a directory +testfolder1 d--755 3 1 +file1 ---755 3 1 /dev/null +$ +: back in the root +testfolder2 d--755 3 1 +file2 ---755 3 1 /dev/null +: done +$ +EOF + +if [ $? -ne 0 ] +then + _fail "failed to create test protofile" +fi + +_scratch_mkfs -f -n parent=1 -p $protofile >>$seqres.full 2>&1 \ + || _fail "mkfs failed" +_check_scratch_fs + +_scratch_mount >>$seqres.full 2>&1 \ + || _fail "mount failed" + +testfolder1="testfolder1" +testfolder2="testfolder2" +file1="file1" +file2="file2" +file3="file3" +file4="file4" +file5="file5" +file1_ln="file1_link" + +echo "" +# Create parent pointer test +_verify_parent "$testfolder1" "$file1" "$testfolder1/$file1" + +echo "" +# Move parent pointer test +mv $SCRATCH_MNT/$testfolder1/$file1 $SCRATCH_MNT/$testfolder2/$file1 +_verify_parent "$testfolder2" "$file1" "$testfolder2/$file1" + +echo "" +# Hard link parent pointer test +ln $SCRATCH_MNT/$testfolder2/$file1 $SCRATCH_MNT/$testfolder1/$file1_ln +_verify_parent "$testfolder1" "$file1_ln" "$testfolder1/$file1_ln" +_verify_parent "$testfolder1" "$file1_ln" "$testfolder2/$file1" +_verify_parent "$testfolder2" "$file1" "$testfolder1/$file1_ln" +_verify_parent "$testfolder2" "$file1" "$testfolder2/$file1" + +echo "" +# Remove hard link parent pointer test +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder2/$file1)" +rm $SCRATCH_MNT/$testfolder2/$file1 +_verify_parent "$testfolder1" "$file1_ln" "$testfolder1/$file1_ln" +_verify_no_parent "$file1" "$ino" "$testfolder1/$file1_ln" + +echo "" +# Rename parent pointer test +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder1/$file1_ln)" +mv $SCRATCH_MNT/$testfolder1/$file1_ln $SCRATCH_MNT/$testfolder1/$file2 +_verify_parent "$testfolder1" "$file2" "$testfolder1/$file2" +_verify_no_parent "$file1_ln" "$ino" "$testfolder1/$file2" + +echo "" +# Over write parent pointer test +touch $SCRATCH_MNT/$testfolder2/$file3 +_verify_parent "$testfolder2" "$file3" "$testfolder2/$file3" +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder2/$file3)" +mv -f $SCRATCH_MNT/$testfolder2/$file3 $SCRATCH_MNT/$testfolder1/$file2 +_verify_parent "$testfolder1" "$file2" "$testfolder1/$file2" + +# success, all done +status=0 +exit diff --git a/tests/xfs/554.out b/tests/xfs/554.out new file mode 100644 index 00000000..67ea9f2b --- /dev/null +++ b/tests/xfs/554.out @@ -0,0 +1,59 @@ +QA output created by 554 + +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1 + +*** testfolder2 OK +*** testfolder2/file1 OK +*** testfolder2/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder2/file1 + +*** testfolder1 OK +*** testfolder1/file1_link OK +*** testfolder1/file1_link OK +*** Verified parent pointer: name:file1_link, namelen:10 +*** Parent pointer OK for child testfolder1/file1_link +*** testfolder1 OK +*** testfolder2/file1 OK +*** testfolder1/file1_link OK +*** Verified parent pointer: name:file1_link, namelen:10 +*** Parent pointer OK for child testfolder2/file1 +*** testfolder2 OK +*** testfolder1/file1_link OK +*** testfolder2/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link +*** testfolder2 OK +*** testfolder2/file1 OK +*** testfolder2/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder2/file1 + +*** testfolder1 OK +*** testfolder1/file1_link OK +*** testfolder1/file1_link OK +*** Verified parent pointer: name:file1_link, namelen:10 +*** Parent pointer OK for child testfolder1/file1_link +*** testfolder1/file1_link OK + +*** testfolder1 OK +*** testfolder1/file2 OK +*** testfolder1/file2 OK +*** Verified parent pointer: name:file2, namelen:5 +*** Parent pointer OK for child testfolder1/file2 +*** testfolder1/file2 OK + +*** testfolder2 OK +*** testfolder2/file3 OK +*** testfolder2/file3 OK +*** Verified parent pointer: name:file3, namelen:5 +*** Parent pointer OK for child testfolder2/file3 +*** testfolder1 OK +*** testfolder1/file2 OK +*** testfolder1/file2 OK +*** Verified parent pointer: name:file2, namelen:5 +*** Parent pointer OK for child testfolder1/file2 -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/4] xfs: add parent pointer test 2022-10-12 1:38 ` [PATCH v2 2/4] xfs: add parent pointer test Catherine Hoang @ 2022-10-12 3:02 ` Zorro Lang 2022-10-12 3:10 ` Zorro Lang 2022-10-13 19:07 ` Allison Henderson 0 siblings, 2 replies; 10+ messages in thread From: Zorro Lang @ 2022-10-12 3:02 UTC (permalink / raw) To: Catherine Hoang; +Cc: linux-xfs, fstests On Tue, Oct 11, 2022 at 06:38:10PM -0700, Catherine Hoang wrote: > From: Allison Henderson <allison.henderson@oracle.com> > > Add a test to verify basic parent pointers operations (create, move, link, > unlink, rename, overwrite). > > Signed-off-by: Allison Henderson <allison.henderson@oracle.com> > Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com> > --- > doc/group-names.txt | 1 + > tests/xfs/554 | 125 ++++++++++++++++++++++++++++++++++++++++++++ > tests/xfs/554.out | 59 +++++++++++++++++++++ > 3 files changed, 185 insertions(+) > create mode 100755 tests/xfs/554 > create mode 100644 tests/xfs/554.out > > diff --git a/doc/group-names.txt b/doc/group-names.txt > index ef411b5e..8e35c699 100644 > --- a/doc/group-names.txt > +++ b/doc/group-names.txt > @@ -77,6 +77,7 @@ nfs4_acl NFSv4 access control lists > nonsamefs overlayfs layers on different filesystems > online_repair online repair functionality tests > other dumping ground, do not add more tests to this group > +parent Parent pointer tests > pattern specific IO pattern tests > perms access control and permission checking > pipe pipe functionality > diff --git a/tests/xfs/554 b/tests/xfs/554 > new file mode 100755 > index 00000000..26914e4c > --- /dev/null > +++ b/tests/xfs/554 > @@ -0,0 +1,125 @@ > +#! /bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (c) 2022, Oracle and/or its affiliates. All Rights Reserved. > +# > +# FS QA Test 554 > +# > +# simple parent pointer test > +# > + > +. ./common/preamble > +_begin_fstest auto quick parent > + > +cleanup() > +{ > + cd / > + rm -f $tmp.* > +} This's same with common cleanup function, you can remove this function. > + > +full() > +{ > + echo "" >>$seqres.full > + echo "*** $* ***" >>$seqres.full > + echo "" >>$seqres.full > +} What's this function for? I didn't see this function is called in this case. Am I missing something? > + > +# get standard environment, filters and checks > +. ./common/filter > +. ./common/reflink > +. ./common/inject > +. ./common/parent > + > +# Modify as appropriate > +_supported_fs xfs > +_require_scratch > +_require_xfs_sysfs debug/larp > +_require_xfs_io_error_injection "larp" > +_require_xfs_parent > +_require_xfs_io_command "parent" > + > +# real QA test starts here > + > +# Create a directory tree using a protofile and > +# make sure all inodes created have parent pointers > + > +protofile=$tmp.proto > + > +cat >$protofile <<EOF > +DUMMY1 > +0 0 > +: root directory > +d--777 3 1 > +: a directory > +testfolder1 d--755 3 1 > +file1 ---755 3 1 /dev/null > +$ > +: back in the root > +testfolder2 d--755 3 1 > +file2 ---755 3 1 /dev/null > +: done > +$ > +EOF > + > +if [ $? -ne 0 ] > +then > + _fail "failed to create test protofile" > +fi It just writes a general file, right? Is there any special reason might cause write fail? I think we don't need to check each step's return value. And if we fail to write a file, bash helps to output error message to break golden image too. Thanks, Zorro > + > +_scratch_mkfs -f -n parent=1 -p $protofile >>$seqres.full 2>&1 \ > + || _fail "mkfs failed" > +_check_scratch_fs > + > +_scratch_mount >>$seqres.full 2>&1 \ > + || _fail "mount failed" > + > +testfolder1="testfolder1" > +testfolder2="testfolder2" > +file1="file1" > +file2="file2" > +file3="file3" > +file4="file4" > +file5="file5" > +file1_ln="file1_link" > + > +echo "" > +# Create parent pointer test > +_verify_parent "$testfolder1" "$file1" "$testfolder1/$file1" > + > +echo "" > +# Move parent pointer test > +mv $SCRATCH_MNT/$testfolder1/$file1 $SCRATCH_MNT/$testfolder2/$file1 > +_verify_parent "$testfolder2" "$file1" "$testfolder2/$file1" > + > +echo "" > +# Hard link parent pointer test > +ln $SCRATCH_MNT/$testfolder2/$file1 $SCRATCH_MNT/$testfolder1/$file1_ln > +_verify_parent "$testfolder1" "$file1_ln" "$testfolder1/$file1_ln" > +_verify_parent "$testfolder1" "$file1_ln" "$testfolder2/$file1" > +_verify_parent "$testfolder2" "$file1" "$testfolder1/$file1_ln" > +_verify_parent "$testfolder2" "$file1" "$testfolder2/$file1" > + > +echo "" > +# Remove hard link parent pointer test > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder2/$file1)" > +rm $SCRATCH_MNT/$testfolder2/$file1 > +_verify_parent "$testfolder1" "$file1_ln" "$testfolder1/$file1_ln" > +_verify_no_parent "$file1" "$ino" "$testfolder1/$file1_ln" > + > +echo "" > +# Rename parent pointer test > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder1/$file1_ln)" > +mv $SCRATCH_MNT/$testfolder1/$file1_ln $SCRATCH_MNT/$testfolder1/$file2 > +_verify_parent "$testfolder1" "$file2" "$testfolder1/$file2" > +_verify_no_parent "$file1_ln" "$ino" "$testfolder1/$file2" > + > +echo "" > +# Over write parent pointer test > +touch $SCRATCH_MNT/$testfolder2/$file3 > +_verify_parent "$testfolder2" "$file3" "$testfolder2/$file3" > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder2/$file3)" > +mv -f $SCRATCH_MNT/$testfolder2/$file3 $SCRATCH_MNT/$testfolder1/$file2 > +_verify_parent "$testfolder1" "$file2" "$testfolder1/$file2" > + > +# success, all done > +status=0 > +exit > diff --git a/tests/xfs/554.out b/tests/xfs/554.out > new file mode 100644 > index 00000000..67ea9f2b > --- /dev/null > +++ b/tests/xfs/554.out > @@ -0,0 +1,59 @@ > +QA output created by 554 > + > +*** testfolder1 OK > +*** testfolder1/file1 OK > +*** testfolder1/file1 OK > +*** Verified parent pointer: name:file1, namelen:5 > +*** Parent pointer OK for child testfolder1/file1 > + > +*** testfolder2 OK > +*** testfolder2/file1 OK > +*** testfolder2/file1 OK > +*** Verified parent pointer: name:file1, namelen:5 > +*** Parent pointer OK for child testfolder2/file1 > + > +*** testfolder1 OK > +*** testfolder1/file1_link OK > +*** testfolder1/file1_link OK > +*** Verified parent pointer: name:file1_link, namelen:10 > +*** Parent pointer OK for child testfolder1/file1_link > +*** testfolder1 OK > +*** testfolder2/file1 OK > +*** testfolder1/file1_link OK > +*** Verified parent pointer: name:file1_link, namelen:10 > +*** Parent pointer OK for child testfolder2/file1 > +*** testfolder2 OK > +*** testfolder1/file1_link OK > +*** testfolder2/file1 OK > +*** Verified parent pointer: name:file1, namelen:5 > +*** Parent pointer OK for child testfolder1/file1_link > +*** testfolder2 OK > +*** testfolder2/file1 OK > +*** testfolder2/file1 OK > +*** Verified parent pointer: name:file1, namelen:5 > +*** Parent pointer OK for child testfolder2/file1 > + > +*** testfolder1 OK > +*** testfolder1/file1_link OK > +*** testfolder1/file1_link OK > +*** Verified parent pointer: name:file1_link, namelen:10 > +*** Parent pointer OK for child testfolder1/file1_link > +*** testfolder1/file1_link OK > + > +*** testfolder1 OK > +*** testfolder1/file2 OK > +*** testfolder1/file2 OK > +*** Verified parent pointer: name:file2, namelen:5 > +*** Parent pointer OK for child testfolder1/file2 > +*** testfolder1/file2 OK > + > +*** testfolder2 OK > +*** testfolder2/file3 OK > +*** testfolder2/file3 OK > +*** Verified parent pointer: name:file3, namelen:5 > +*** Parent pointer OK for child testfolder2/file3 > +*** testfolder1 OK > +*** testfolder1/file2 OK > +*** testfolder1/file2 OK > +*** Verified parent pointer: name:file2, namelen:5 > +*** Parent pointer OK for child testfolder1/file2 > -- > 2.25.1 > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/4] xfs: add parent pointer test 2022-10-12 3:02 ` Zorro Lang @ 2022-10-12 3:10 ` Zorro Lang 2022-10-13 19:55 ` Allison Henderson 2022-10-13 19:07 ` Allison Henderson 1 sibling, 1 reply; 10+ messages in thread From: Zorro Lang @ 2022-10-12 3:10 UTC (permalink / raw) To: Catherine Hoang; +Cc: linux-xfs, fstests On Wed, Oct 12, 2022 at 11:02:20AM +0800, Zorro Lang wrote: > On Tue, Oct 11, 2022 at 06:38:10PM -0700, Catherine Hoang wrote: > > From: Allison Henderson <allison.henderson@oracle.com> > > > > Add a test to verify basic parent pointers operations (create, move, link, > > unlink, rename, overwrite). > > > > Signed-off-by: Allison Henderson <allison.henderson@oracle.com> > > Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com> > > --- > > doc/group-names.txt | 1 + > > tests/xfs/554 | 125 ++++++++++++++++++++++++++++++++++++++++++++ > > tests/xfs/554.out | 59 +++++++++++++++++++++ > > 3 files changed, 185 insertions(+) > > create mode 100755 tests/xfs/554 > > create mode 100644 tests/xfs/554.out > > > > diff --git a/doc/group-names.txt b/doc/group-names.txt > > index ef411b5e..8e35c699 100644 > > --- a/doc/group-names.txt > > +++ b/doc/group-names.txt > > @@ -77,6 +77,7 @@ nfs4_acl NFSv4 access control lists > > nonsamefs overlayfs layers on different filesystems > > online_repair online repair functionality tests > > other dumping ground, do not add more tests to this group > > +parent Parent pointer tests > > pattern specific IO pattern tests > > perms access control and permission checking > > pipe pipe functionality > > diff --git a/tests/xfs/554 b/tests/xfs/554 > > new file mode 100755 > > index 00000000..26914e4c > > --- /dev/null > > +++ b/tests/xfs/554 > > @@ -0,0 +1,125 @@ > > +#! /bin/bash > > +# SPDX-License-Identifier: GPL-2.0 > > +# Copyright (c) 2022, Oracle and/or its affiliates. All Rights Reserved. > > +# > > +# FS QA Test 554 > > +# > > +# simple parent pointer test > > +# > > + > > +. ./common/preamble > > +_begin_fstest auto quick parent > > + > > +cleanup() > > +{ > > + cd / > > + rm -f $tmp.* > > +} > > This's same with common cleanup function, you can remove this function. Same for patch 3 and 4. > > > + > > +full() > > +{ > > + echo "" >>$seqres.full > > + echo "*** $* ***" >>$seqres.full > > + echo "" >>$seqres.full > > +} > > What's this function for? I didn't see this function is called in this case. > Am I missing something? Same question for patch 3 and 4. > > > + > > +# get standard environment, filters and checks > > +. ./common/filter > > +. ./common/reflink > > +. ./common/inject > > +. ./common/parent > > + > > +# Modify as appropriate > > +_supported_fs xfs > > +_require_scratch > > +_require_xfs_sysfs debug/larp > > +_require_xfs_io_error_injection "larp" And does this case really do error injection? I didn't find that. If not, please remove this requirement and above common/inject. Same question for patch 4. Thanks, Zorro > > +_require_xfs_parent > > +_require_xfs_io_command "parent" > > + > > +# real QA test starts here > > + > > +# Create a directory tree using a protofile and > > +# make sure all inodes created have parent pointers > > + > > +protofile=$tmp.proto > > + > > +cat >$protofile <<EOF > > +DUMMY1 > > +0 0 > > +: root directory > > +d--777 3 1 > > +: a directory > > +testfolder1 d--755 3 1 > > +file1 ---755 3 1 /dev/null > > +$ > > +: back in the root > > +testfolder2 d--755 3 1 > > +file2 ---755 3 1 /dev/null > > +: done > > +$ > > +EOF > > + > > +if [ $? -ne 0 ] > > +then > > + _fail "failed to create test protofile" > > +fi > > It just writes a general file, right? Is there any special reason might cause > write fail? > > I think we don't need to check each step's return value. And if we fail to write > a file, bash helps to output error message to break golden image too. > > Thanks, > Zorro > > > + > > +_scratch_mkfs -f -n parent=1 -p $protofile >>$seqres.full 2>&1 \ > > + || _fail "mkfs failed" > > +_check_scratch_fs > > + > > +_scratch_mount >>$seqres.full 2>&1 \ > > + || _fail "mount failed" > > + > > +testfolder1="testfolder1" > > +testfolder2="testfolder2" > > +file1="file1" > > +file2="file2" > > +file3="file3" > > +file4="file4" > > +file5="file5" > > +file1_ln="file1_link" > > + > > +echo "" > > +# Create parent pointer test > > +_verify_parent "$testfolder1" "$file1" "$testfolder1/$file1" > > + > > +echo "" > > +# Move parent pointer test > > +mv $SCRATCH_MNT/$testfolder1/$file1 $SCRATCH_MNT/$testfolder2/$file1 > > +_verify_parent "$testfolder2" "$file1" "$testfolder2/$file1" > > + > > +echo "" > > +# Hard link parent pointer test > > +ln $SCRATCH_MNT/$testfolder2/$file1 $SCRATCH_MNT/$testfolder1/$file1_ln > > +_verify_parent "$testfolder1" "$file1_ln" "$testfolder1/$file1_ln" > > +_verify_parent "$testfolder1" "$file1_ln" "$testfolder2/$file1" > > +_verify_parent "$testfolder2" "$file1" "$testfolder1/$file1_ln" > > +_verify_parent "$testfolder2" "$file1" "$testfolder2/$file1" > > + > > +echo "" > > +# Remove hard link parent pointer test > > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder2/$file1)" > > +rm $SCRATCH_MNT/$testfolder2/$file1 > > +_verify_parent "$testfolder1" "$file1_ln" "$testfolder1/$file1_ln" > > +_verify_no_parent "$file1" "$ino" "$testfolder1/$file1_ln" > > + > > +echo "" > > +# Rename parent pointer test > > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder1/$file1_ln)" > > +mv $SCRATCH_MNT/$testfolder1/$file1_ln $SCRATCH_MNT/$testfolder1/$file2 > > +_verify_parent "$testfolder1" "$file2" "$testfolder1/$file2" > > +_verify_no_parent "$file1_ln" "$ino" "$testfolder1/$file2" > > + > > +echo "" > > +# Over write parent pointer test > > +touch $SCRATCH_MNT/$testfolder2/$file3 > > +_verify_parent "$testfolder2" "$file3" "$testfolder2/$file3" > > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder2/$file3)" > > +mv -f $SCRATCH_MNT/$testfolder2/$file3 $SCRATCH_MNT/$testfolder1/$file2 > > +_verify_parent "$testfolder1" "$file2" "$testfolder1/$file2" > > + > > +# success, all done > > +status=0 > > +exit > > diff --git a/tests/xfs/554.out b/tests/xfs/554.out > > new file mode 100644 > > index 00000000..67ea9f2b > > --- /dev/null > > +++ b/tests/xfs/554.out > > @@ -0,0 +1,59 @@ > > +QA output created by 554 > > + > > +*** testfolder1 OK > > +*** testfolder1/file1 OK > > +*** testfolder1/file1 OK > > +*** Verified parent pointer: name:file1, namelen:5 > > +*** Parent pointer OK for child testfolder1/file1 > > + > > +*** testfolder2 OK > > +*** testfolder2/file1 OK > > +*** testfolder2/file1 OK > > +*** Verified parent pointer: name:file1, namelen:5 > > +*** Parent pointer OK for child testfolder2/file1 > > + > > +*** testfolder1 OK > > +*** testfolder1/file1_link OK > > +*** testfolder1/file1_link OK > > +*** Verified parent pointer: name:file1_link, namelen:10 > > +*** Parent pointer OK for child testfolder1/file1_link > > +*** testfolder1 OK > > +*** testfolder2/file1 OK > > +*** testfolder1/file1_link OK > > +*** Verified parent pointer: name:file1_link, namelen:10 > > +*** Parent pointer OK for child testfolder2/file1 > > +*** testfolder2 OK > > +*** testfolder1/file1_link OK > > +*** testfolder2/file1 OK > > +*** Verified parent pointer: name:file1, namelen:5 > > +*** Parent pointer OK for child testfolder1/file1_link > > +*** testfolder2 OK > > +*** testfolder2/file1 OK > > +*** testfolder2/file1 OK > > +*** Verified parent pointer: name:file1, namelen:5 > > +*** Parent pointer OK for child testfolder2/file1 > > + > > +*** testfolder1 OK > > +*** testfolder1/file1_link OK > > +*** testfolder1/file1_link OK > > +*** Verified parent pointer: name:file1_link, namelen:10 > > +*** Parent pointer OK for child testfolder1/file1_link > > +*** testfolder1/file1_link OK > > + > > +*** testfolder1 OK > > +*** testfolder1/file2 OK > > +*** testfolder1/file2 OK > > +*** Verified parent pointer: name:file2, namelen:5 > > +*** Parent pointer OK for child testfolder1/file2 > > +*** testfolder1/file2 OK > > + > > +*** testfolder2 OK > > +*** testfolder2/file3 OK > > +*** testfolder2/file3 OK > > +*** Verified parent pointer: name:file3, namelen:5 > > +*** Parent pointer OK for child testfolder2/file3 > > +*** testfolder1 OK > > +*** testfolder1/file2 OK > > +*** testfolder1/file2 OK > > +*** Verified parent pointer: name:file2, namelen:5 > > +*** Parent pointer OK for child testfolder1/file2 > > -- > > 2.25.1 > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/4] xfs: add parent pointer test 2022-10-12 3:10 ` Zorro Lang @ 2022-10-13 19:55 ` Allison Henderson 2022-10-14 1:24 ` Zorro Lang 0 siblings, 1 reply; 10+ messages in thread From: Allison Henderson @ 2022-10-13 19:55 UTC (permalink / raw) To: Catherine Hoang, zlang; +Cc: fstests, linux-xfs On Wed, 2022-10-12 at 11:10 +0800, Zorro Lang wrote: > On Wed, Oct 12, 2022 at 11:02:20AM +0800, Zorro Lang wrote: > > On Tue, Oct 11, 2022 at 06:38:10PM -0700, Catherine Hoang wrote: > > > From: Allison Henderson <allison.henderson@oracle.com> > > > > > > Add a test to verify basic parent pointers operations (create, > > > move, link, > > > unlink, rename, overwrite). > > > > > > Signed-off-by: Allison Henderson <allison.henderson@oracle.com> > > > Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com> > > > --- > > > doc/group-names.txt | 1 + > > > tests/xfs/554 | 125 > > > ++++++++++++++++++++++++++++++++++++++++++++ > > > tests/xfs/554.out | 59 +++++++++++++++++++++ > > > 3 files changed, 185 insertions(+) > > > create mode 100755 tests/xfs/554 > > > create mode 100644 tests/xfs/554.out > > > > > > diff --git a/doc/group-names.txt b/doc/group-names.txt > > > index ef411b5e..8e35c699 100644 > > > --- a/doc/group-names.txt > > > +++ b/doc/group-names.txt > > > @@ -77,6 +77,7 @@ nfs4_acl NFSv4 access control > > > lists > > > nonsamefs overlayfs layers on different filesystems > > > online_repair online repair functionality tests > > > other dumping ground, do not add more tests to > > > this group > > > +parent Parent pointer tests > > > pattern specific IO pattern tests > > > perms access control and permission checking > > > pipe pipe functionality > > > diff --git a/tests/xfs/554 b/tests/xfs/554 > > > new file mode 100755 > > > index 00000000..26914e4c > > > --- /dev/null > > > +++ b/tests/xfs/554 > > > @@ -0,0 +1,125 @@ > > > +#! /bin/bash > > > +# SPDX-License-Identifier: GPL-2.0 > > > +# Copyright (c) 2022, Oracle and/or its affiliates. All Rights > > > Reserved. > > > +# > > > +# FS QA Test 554 > > > +# > > > +# simple parent pointer test > > > +# > > > + > > > +. ./common/preamble > > > +_begin_fstest auto quick parent > > > + > > > +cleanup() > > > +{ > > > + cd / > > > + rm -f $tmp.* > > > +} > > > > This's same with common cleanup function, you can remove this > > function. > > Same for patch 3 and 4. > > > > > > + > > > +full() > > > +{ > > > + echo "" >>$seqres.full > > > + echo "*** $* ***" >>$seqres.full > > > + echo "" >>$seqres.full > > > +} > > > > What's this function for? I didn't see this function is called in > > this case. > > Am I missing something? > > Same question for patch 3 and 4. Think I answered these in the other patch review... > > > > > > + > > > +# get standard environment, filters and checks > > > +. ./common/filter > > > +. ./common/reflink > > > +. ./common/inject > > > +. ./common/parent > > > + > > > +# Modify as appropriate > > > +_supported_fs xfs > > > +_require_scratch > > > +_require_xfs_sysfs debug/larp > > > +_require_xfs_io_error_injection "larp" > > And does this case really do error injection? I didn't find that. If > not, please > remove this requirement and above common/inject. I think at one point I had all these tests in one file and then later separated them into multiple tests. So I think the requirements for injects can be removed from patch 2 and 3 > Same question for patch 4. Patch 4 does do injects, so the requirement should stay. Allison > > Thanks, > Zorro > > > > +_require_xfs_parent > > > +_require_xfs_io_command "parent" > > > + > > > +# real QA test starts here > > > + > > > +# Create a directory tree using a protofile and > > > +# make sure all inodes created have parent pointers > > > + > > > +protofile=$tmp.proto > > > + > > > +cat >$protofile <<EOF > > > +DUMMY1 > > > +0 0 > > > +: root directory > > > +d--777 3 1 > > > +: a directory > > > +testfolder1 d--755 3 1 > > > +file1 ---755 3 1 /dev/null > > > +$ > > > +: back in the root > > > +testfolder2 d--755 3 1 > > > +file2 ---755 3 1 /dev/null > > > +: done > > > +$ > > > +EOF > > > + > > > +if [ $? -ne 0 ] > > > +then > > > + _fail "failed to create test protofile" > > > +fi > > > > It just writes a general file, right? Is there any special reason > > might cause > > write fail? > > > > I think we don't need to check each step's return value. And if we > > fail to write > > a file, bash helps to output error message to break golden image > > too. > > > > Thanks, > > Zorro > > > > > + > > > +_scratch_mkfs -f -n parent=1 -p $protofile >>$seqres.full 2>&1 \ > > > + || _fail "mkfs failed" > > > +_check_scratch_fs > > > + > > > +_scratch_mount >>$seqres.full 2>&1 \ > > > + || _fail "mount failed" > > > + > > > +testfolder1="testfolder1" > > > +testfolder2="testfolder2" > > > +file1="file1" > > > +file2="file2" > > > +file3="file3" > > > +file4="file4" > > > +file5="file5" > > > +file1_ln="file1_link" > > > + > > > +echo "" > > > +# Create parent pointer test > > > +_verify_parent "$testfolder1" "$file1" "$testfolder1/$file1" > > > + > > > +echo "" > > > +# Move parent pointer test > > > +mv $SCRATCH_MNT/$testfolder1/$file1 > > > $SCRATCH_MNT/$testfolder2/$file1 > > > +_verify_parent "$testfolder2" "$file1" "$testfolder2/$file1" > > > + > > > +echo "" > > > +# Hard link parent pointer test > > > +ln $SCRATCH_MNT/$testfolder2/$file1 > > > $SCRATCH_MNT/$testfolder1/$file1_ln > > > +_verify_parent "$testfolder1" "$file1_ln" > > > "$testfolder1/$file1_ln" > > > +_verify_parent "$testfolder1" "$file1_ln" "$testfolder2/$file1" > > > +_verify_parent "$testfolder2" "$file1" > > > "$testfolder1/$file1_ln" > > > +_verify_parent "$testfolder2" "$file1" "$testfolder2/$file1" > > > + > > > +echo "" > > > +# Remove hard link parent pointer test > > > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder2/$file1)" > > > +rm $SCRATCH_MNT/$testfolder2/$file1 > > > +_verify_parent "$testfolder1" "$file1_ln" > > > "$testfolder1/$file1_ln" > > > +_verify_no_parent "$file1" "$ino" "$testfolder1/$file1_ln" > > > + > > > +echo "" > > > +# Rename parent pointer test > > > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder1/$file1_ln)" > > > +mv $SCRATCH_MNT/$testfolder1/$file1_ln > > > $SCRATCH_MNT/$testfolder1/$file2 > > > +_verify_parent "$testfolder1" "$file2" "$testfolder1/$file2" > > > +_verify_no_parent "$file1_ln" "$ino" "$testfolder1/$file2" > > > + > > > +echo "" > > > +# Over write parent pointer test > > > +touch $SCRATCH_MNT/$testfolder2/$file3 > > > +_verify_parent "$testfolder2" "$file3" "$testfolder2/$file3" > > > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder2/$file3)" > > > +mv -f $SCRATCH_MNT/$testfolder2/$file3 > > > $SCRATCH_MNT/$testfolder1/$file2 > > > +_verify_parent "$testfolder1" "$file2" "$testfolder1/$file2" > > > + > > > +# success, all done > > > +status=0 > > > +exit > > > diff --git a/tests/xfs/554.out b/tests/xfs/554.out > > > new file mode 100644 > > > index 00000000..67ea9f2b > > > --- /dev/null > > > +++ b/tests/xfs/554.out > > > @@ -0,0 +1,59 @@ > > > +QA output created by 554 > > > + > > > +*** testfolder1 OK > > > +*** testfolder1/file1 OK > > > +*** testfolder1/file1 OK > > > +*** Verified parent pointer: name:file1, namelen:5 > > > +*** Parent pointer OK for child testfolder1/file1 > > > + > > > +*** testfolder2 OK > > > +*** testfolder2/file1 OK > > > +*** testfolder2/file1 OK > > > +*** Verified parent pointer: name:file1, namelen:5 > > > +*** Parent pointer OK for child testfolder2/file1 > > > + > > > +*** testfolder1 OK > > > +*** testfolder1/file1_link OK > > > +*** testfolder1/file1_link OK > > > +*** Verified parent pointer: name:file1_link, namelen:10 > > > +*** Parent pointer OK for child testfolder1/file1_link > > > +*** testfolder1 OK > > > +*** testfolder2/file1 OK > > > +*** testfolder1/file1_link OK > > > +*** Verified parent pointer: name:file1_link, namelen:10 > > > +*** Parent pointer OK for child testfolder2/file1 > > > +*** testfolder2 OK > > > +*** testfolder1/file1_link OK > > > +*** testfolder2/file1 OK > > > +*** Verified parent pointer: name:file1, namelen:5 > > > +*** Parent pointer OK for child testfolder1/file1_link > > > +*** testfolder2 OK > > > +*** testfolder2/file1 OK > > > +*** testfolder2/file1 OK > > > +*** Verified parent pointer: name:file1, namelen:5 > > > +*** Parent pointer OK for child testfolder2/file1 > > > + > > > +*** testfolder1 OK > > > +*** testfolder1/file1_link OK > > > +*** testfolder1/file1_link OK > > > +*** Verified parent pointer: name:file1_link, namelen:10 > > > +*** Parent pointer OK for child testfolder1/file1_link > > > +*** testfolder1/file1_link OK > > > + > > > +*** testfolder1 OK > > > +*** testfolder1/file2 OK > > > +*** testfolder1/file2 OK > > > +*** Verified parent pointer: name:file2, namelen:5 > > > +*** Parent pointer OK for child testfolder1/file2 > > > +*** testfolder1/file2 OK > > > + > > > +*** testfolder2 OK > > > +*** testfolder2/file3 OK > > > +*** testfolder2/file3 OK > > > +*** Verified parent pointer: name:file3, namelen:5 > > > +*** Parent pointer OK for child testfolder2/file3 > > > +*** testfolder1 OK > > > +*** testfolder1/file2 OK > > > +*** testfolder1/file2 OK > > > +*** Verified parent pointer: name:file2, namelen:5 > > > +*** Parent pointer OK for child testfolder1/file2 > > > -- > > > 2.25.1 > > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/4] xfs: add parent pointer test 2022-10-13 19:55 ` Allison Henderson @ 2022-10-14 1:24 ` Zorro Lang 0 siblings, 0 replies; 10+ messages in thread From: Zorro Lang @ 2022-10-14 1:24 UTC (permalink / raw) To: Allison Henderson; +Cc: Catherine Hoang, fstests, linux-xfs On Thu, Oct 13, 2022 at 07:55:42PM +0000, Allison Henderson wrote: > On Wed, 2022-10-12 at 11:10 +0800, Zorro Lang wrote: > > On Wed, Oct 12, 2022 at 11:02:20AM +0800, Zorro Lang wrote: > > > On Tue, Oct 11, 2022 at 06:38:10PM -0700, Catherine Hoang wrote: > > > > From: Allison Henderson <allison.henderson@oracle.com> > > > > > > > > Add a test to verify basic parent pointers operations (create, > > > > move, link, > > > > unlink, rename, overwrite). > > > > > > > > Signed-off-by: Allison Henderson <allison.henderson@oracle.com> > > > > Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com> > > > > --- > > > > doc/group-names.txt | 1 + > > > > tests/xfs/554 | 125 > > > > ++++++++++++++++++++++++++++++++++++++++++++ > > > > tests/xfs/554.out | 59 +++++++++++++++++++++ > > > > 3 files changed, 185 insertions(+) > > > > create mode 100755 tests/xfs/554 > > > > create mode 100644 tests/xfs/554.out > > > > > > > > diff --git a/doc/group-names.txt b/doc/group-names.txt > > > > index ef411b5e..8e35c699 100644 > > > > --- a/doc/group-names.txt > > > > +++ b/doc/group-names.txt > > > > @@ -77,6 +77,7 @@ nfs4_acl NFSv4 access control > > > > lists > > > > nonsamefs overlayfs layers on different filesystems > > > > online_repair online repair functionality tests > > > > other dumping ground, do not add more tests to > > > > this group > > > > +parent Parent pointer tests > > > > pattern specific IO pattern tests > > > > perms access control and permission checking > > > > pipe pipe functionality > > > > diff --git a/tests/xfs/554 b/tests/xfs/554 > > > > new file mode 100755 > > > > index 00000000..26914e4c > > > > --- /dev/null > > > > +++ b/tests/xfs/554 > > > > @@ -0,0 +1,125 @@ > > > > +#! /bin/bash > > > > +# SPDX-License-Identifier: GPL-2.0 > > > > +# Copyright (c) 2022, Oracle and/or its affiliates. All Rights > > > > Reserved. > > > > +# > > > > +# FS QA Test 554 > > > > +# > > > > +# simple parent pointer test > > > > +# > > > > + > > > > +. ./common/preamble > > > > +_begin_fstest auto quick parent > > > > + > > > > +cleanup() > > > > +{ > > > > + cd / > > > > + rm -f $tmp.* > > > > +} > > > > > > This's same with common cleanup function, you can remove this > > > function. > > > > Same for patch 3 and 4. > > > > > > > > > + > > > > +full() > > > > +{ > > > > + echo "" >>$seqres.full > > > > + echo "*** $* ***" >>$seqres.full > > > > + echo "" >>$seqres.full > > > > +} > > > > > > What's this function for? I didn't see this function is called in > > > this case. > > > Am I missing something? > > > > Same question for patch 3 and 4. > Think I answered these in the other patch review... > > > > > > > > > > + > > > > +# get standard environment, filters and checks > > > > +. ./common/filter > > > > +. ./common/reflink > > > > +. ./common/inject > > > > +. ./common/parent > > > > + > > > > +# Modify as appropriate > > > > +_supported_fs xfs > > > > +_require_scratch > > > > +_require_xfs_sysfs debug/larp > > > > +_require_xfs_io_error_injection "larp" > > > > And does this case really do error injection? I didn't find that. If > > not, please > > remove this requirement and above common/inject. > I think at one point I had all these tests in one file and then later > separated them into multiple tests. So I think the requirements for > injects can be removed from patch 2 and 3 Sure, yes, same for patch 3 not 4. I said wrong below:) > > > Same question for patch 4. > Patch 4 does do injects, so the requirement should stay. > > Allison > > > > > Thanks, > > Zorro > > > > > > +_require_xfs_parent > > > > +_require_xfs_io_command "parent" > > > > + > > > > +# real QA test starts here > > > > + > > > > +# Create a directory tree using a protofile and > > > > +# make sure all inodes created have parent pointers > > > > + > > > > +protofile=$tmp.proto > > > > + > > > > +cat >$protofile <<EOF > > > > +DUMMY1 > > > > +0 0 > > > > +: root directory > > > > +d--777 3 1 > > > > +: a directory > > > > +testfolder1 d--755 3 1 > > > > +file1 ---755 3 1 /dev/null > > > > +$ > > > > +: back in the root > > > > +testfolder2 d--755 3 1 > > > > +file2 ---755 3 1 /dev/null > > > > +: done > > > > +$ > > > > +EOF > > > > + > > > > +if [ $? -ne 0 ] > > > > +then > > > > + _fail "failed to create test protofile" > > > > +fi > > > > > > It just writes a general file, right? Is there any special reason > > > might cause > > > write fail? > > > > > > I think we don't need to check each step's return value. And if we > > > fail to write > > > a file, bash helps to output error message to break golden image > > > too. > > > > > > Thanks, > > > Zorro > > > > > > > + > > > > +_scratch_mkfs -f -n parent=1 -p $protofile >>$seqres.full 2>&1 \ > > > > + || _fail "mkfs failed" > > > > +_check_scratch_fs > > > > + > > > > +_scratch_mount >>$seqres.full 2>&1 \ > > > > + || _fail "mount failed" > > > > + > > > > +testfolder1="testfolder1" > > > > +testfolder2="testfolder2" > > > > +file1="file1" > > > > +file2="file2" > > > > +file3="file3" > > > > +file4="file4" > > > > +file5="file5" > > > > +file1_ln="file1_link" > > > > + > > > > +echo "" > > > > +# Create parent pointer test > > > > +_verify_parent "$testfolder1" "$file1" "$testfolder1/$file1" > > > > + > > > > +echo "" > > > > +# Move parent pointer test > > > > +mv $SCRATCH_MNT/$testfolder1/$file1 > > > > $SCRATCH_MNT/$testfolder2/$file1 > > > > +_verify_parent "$testfolder2" "$file1" "$testfolder2/$file1" > > > > + > > > > +echo "" > > > > +# Hard link parent pointer test > > > > +ln $SCRATCH_MNT/$testfolder2/$file1 > > > > $SCRATCH_MNT/$testfolder1/$file1_ln > > > > +_verify_parent "$testfolder1" "$file1_ln" > > > > "$testfolder1/$file1_ln" > > > > +_verify_parent "$testfolder1" "$file1_ln" "$testfolder2/$file1" > > > > +_verify_parent "$testfolder2" "$file1" > > > > "$testfolder1/$file1_ln" > > > > +_verify_parent "$testfolder2" "$file1" "$testfolder2/$file1" > > > > + > > > > +echo "" > > > > +# Remove hard link parent pointer test > > > > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder2/$file1)" > > > > +rm $SCRATCH_MNT/$testfolder2/$file1 > > > > +_verify_parent "$testfolder1" "$file1_ln" > > > > "$testfolder1/$file1_ln" > > > > +_verify_no_parent "$file1" "$ino" "$testfolder1/$file1_ln" > > > > + > > > > +echo "" > > > > +# Rename parent pointer test > > > > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder1/$file1_ln)" > > > > +mv $SCRATCH_MNT/$testfolder1/$file1_ln > > > > $SCRATCH_MNT/$testfolder1/$file2 > > > > +_verify_parent "$testfolder1" "$file2" "$testfolder1/$file2" > > > > +_verify_no_parent "$file1_ln" "$ino" "$testfolder1/$file2" > > > > + > > > > +echo "" > > > > +# Over write parent pointer test > > > > +touch $SCRATCH_MNT/$testfolder2/$file3 > > > > +_verify_parent "$testfolder2" "$file3" "$testfolder2/$file3" > > > > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder2/$file3)" > > > > +mv -f $SCRATCH_MNT/$testfolder2/$file3 > > > > $SCRATCH_MNT/$testfolder1/$file2 > > > > +_verify_parent "$testfolder1" "$file2" "$testfolder1/$file2" > > > > + > > > > +# success, all done > > > > +status=0 > > > > +exit > > > > diff --git a/tests/xfs/554.out b/tests/xfs/554.out > > > > new file mode 100644 > > > > index 00000000..67ea9f2b > > > > --- /dev/null > > > > +++ b/tests/xfs/554.out > > > > @@ -0,0 +1,59 @@ > > > > +QA output created by 554 > > > > + > > > > +*** testfolder1 OK > > > > +*** testfolder1/file1 OK > > > > +*** testfolder1/file1 OK > > > > +*** Verified parent pointer: name:file1, namelen:5 > > > > +*** Parent pointer OK for child testfolder1/file1 > > > > + > > > > +*** testfolder2 OK > > > > +*** testfolder2/file1 OK > > > > +*** testfolder2/file1 OK > > > > +*** Verified parent pointer: name:file1, namelen:5 > > > > +*** Parent pointer OK for child testfolder2/file1 > > > > + > > > > +*** testfolder1 OK > > > > +*** testfolder1/file1_link OK > > > > +*** testfolder1/file1_link OK > > > > +*** Verified parent pointer: name:file1_link, namelen:10 > > > > +*** Parent pointer OK for child testfolder1/file1_link > > > > +*** testfolder1 OK > > > > +*** testfolder2/file1 OK > > > > +*** testfolder1/file1_link OK > > > > +*** Verified parent pointer: name:file1_link, namelen:10 > > > > +*** Parent pointer OK for child testfolder2/file1 > > > > +*** testfolder2 OK > > > > +*** testfolder1/file1_link OK > > > > +*** testfolder2/file1 OK > > > > +*** Verified parent pointer: name:file1, namelen:5 > > > > +*** Parent pointer OK for child testfolder1/file1_link > > > > +*** testfolder2 OK > > > > +*** testfolder2/file1 OK > > > > +*** testfolder2/file1 OK > > > > +*** Verified parent pointer: name:file1, namelen:5 > > > > +*** Parent pointer OK for child testfolder2/file1 > > > > + > > > > +*** testfolder1 OK > > > > +*** testfolder1/file1_link OK > > > > +*** testfolder1/file1_link OK > > > > +*** Verified parent pointer: name:file1_link, namelen:10 > > > > +*** Parent pointer OK for child testfolder1/file1_link > > > > +*** testfolder1/file1_link OK > > > > + > > > > +*** testfolder1 OK > > > > +*** testfolder1/file2 OK > > > > +*** testfolder1/file2 OK > > > > +*** Verified parent pointer: name:file2, namelen:5 > > > > +*** Parent pointer OK for child testfolder1/file2 > > > > +*** testfolder1/file2 OK > > > > + > > > > +*** testfolder2 OK > > > > +*** testfolder2/file3 OK > > > > +*** testfolder2/file3 OK > > > > +*** Verified parent pointer: name:file3, namelen:5 > > > > +*** Parent pointer OK for child testfolder2/file3 > > > > +*** testfolder1 OK > > > > +*** testfolder1/file2 OK > > > > +*** testfolder1/file2 OK > > > > +*** Verified parent pointer: name:file2, namelen:5 > > > > +*** Parent pointer OK for child testfolder1/file2 > > > > -- > > > > 2.25.1 > > > > > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/4] xfs: add parent pointer test 2022-10-12 3:02 ` Zorro Lang 2022-10-12 3:10 ` Zorro Lang @ 2022-10-13 19:07 ` Allison Henderson 1 sibling, 0 replies; 10+ messages in thread From: Allison Henderson @ 2022-10-13 19:07 UTC (permalink / raw) To: Catherine Hoang, zlang; +Cc: fstests, linux-xfs On Wed, 2022-10-12 at 11:02 +0800, Zorro Lang wrote: > On Tue, Oct 11, 2022 at 06:38:10PM -0700, Catherine Hoang wrote: > > From: Allison Henderson <allison.henderson@oracle.com> > > > > Add a test to verify basic parent pointers operations (create, > > move, link, > > unlink, rename, overwrite). > > > > Signed-off-by: Allison Henderson <allison.henderson@oracle.com> > > Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com> > > --- > > doc/group-names.txt | 1 + > > tests/xfs/554 | 125 > > ++++++++++++++++++++++++++++++++++++++++++++ > > tests/xfs/554.out | 59 +++++++++++++++++++++ > > 3 files changed, 185 insertions(+) > > create mode 100755 tests/xfs/554 > > create mode 100644 tests/xfs/554.out > > > > diff --git a/doc/group-names.txt b/doc/group-names.txt > > index ef411b5e..8e35c699 100644 > > --- a/doc/group-names.txt > > +++ b/doc/group-names.txt > > @@ -77,6 +77,7 @@ nfs4_acl NFSv4 access control lists > > nonsamefs overlayfs layers on different filesystems > > online_repair online repair functionality tests > > other dumping ground, do not add more tests to > > this group > > +parent Parent pointer tests > > pattern specific IO pattern tests > > perms access control and permission checking > > pipe pipe functionality > > diff --git a/tests/xfs/554 b/tests/xfs/554 > > new file mode 100755 > > index 00000000..26914e4c > > --- /dev/null > > +++ b/tests/xfs/554 > > @@ -0,0 +1,125 @@ > > +#! /bin/bash > > +# SPDX-License-Identifier: GPL-2.0 > > +# Copyright (c) 2022, Oracle and/or its affiliates. All Rights > > Reserved. > > +# > > +# FS QA Test 554 > > +# > > +# simple parent pointer test > > +# > > + > > +. ./common/preamble > > +_begin_fstest auto quick parent > > + > > +cleanup() > > +{ > > + cd / > > + rm -f $tmp.* > > +} > > This's same with common cleanup function, you can remove this > function. Ok, these tests were initially written before these helpers were hoisted into a common location, so it makes sense to clean them out now. > > > + > > +full() > > +{ > > + echo "" >>$seqres.full > > + echo "*** $* ***" >>$seqres.full > > + echo "" >>$seqres.full > > +} > > What's this function for? I didn't see this function is called in > this case. > Am I missing something? I think it's another common helper that's over in common/log now. I suspect it was just reminiscent of the test case I modeled this after at the time. It should likely come out now too. > > > + > > +# get standard environment, filters and checks > > +. ./common/filter > > +. ./common/reflink > > +. ./common/inject > > +. ./common/parent > > + > > +# Modify as appropriate > > +_supported_fs xfs > > +_require_scratch > > +_require_xfs_sysfs debug/larp > > +_require_xfs_io_error_injection "larp" > > +_require_xfs_parent > > +_require_xfs_io_command "parent" > > + > > +# real QA test starts here > > + > > +# Create a directory tree using a protofile and > > +# make sure all inodes created have parent pointers > > + > > +protofile=$tmp.proto > > + > > +cat >$protofile <<EOF > > +DUMMY1 > > +0 0 > > +: root directory > > +d--777 3 1 > > +: a directory > > +testfolder1 d--755 3 1 > > +file1 ---755 3 1 /dev/null > > +$ > > +: back in the root > > +testfolder2 d--755 3 1 > > +file2 ---755 3 1 /dev/null > > +: done > > +$ > > +EOF > > + > > +if [ $? -ne 0 ] > > +then > > + _fail "failed to create test protofile" > > +fi > > It just writes a general file, right? Is there any special reason > might cause > write fail? > > I think we don't need to check each step's return value. And if we > fail to write > a file, bash helps to output error message to break golden image too. > I think I had borrowed this from the protofile test case (tests/xfs/019). But yes, if the file creation were to fail, I think the mkfs command will just error out. It should be fine to take it out if folks prefer. Thanks for the reviews! Allison > Thanks, > Zorro > > > + > > +_scratch_mkfs -f -n parent=1 -p $protofile >>$seqres.full 2>&1 \ > > + || _fail "mkfs failed" > > +_check_scratch_fs > > + > > +_scratch_mount >>$seqres.full 2>&1 \ > > + || _fail "mount failed" > > + > > +testfolder1="testfolder1" > > +testfolder2="testfolder2" > > +file1="file1" > > +file2="file2" > > +file3="file3" > > +file4="file4" > > +file5="file5" > > +file1_ln="file1_link" > > + > > +echo "" > > +# Create parent pointer test > > +_verify_parent "$testfolder1" "$file1" "$testfolder1/$file1" > > + > > +echo "" > > +# Move parent pointer test > > +mv $SCRATCH_MNT/$testfolder1/$file1 > > $SCRATCH_MNT/$testfolder2/$file1 > > +_verify_parent "$testfolder2" "$file1" "$testfolder2/$file1" > > + > > +echo "" > > +# Hard link parent pointer test > > +ln $SCRATCH_MNT/$testfolder2/$file1 > > $SCRATCH_MNT/$testfolder1/$file1_ln > > +_verify_parent "$testfolder1" "$file1_ln" "$testfolder1/$file1_ln" > > +_verify_parent "$testfolder1" "$file1_ln" "$testfolder2/$file1" > > +_verify_parent "$testfolder2" "$file1" "$testfolder1/$file1_ln" > > +_verify_parent "$testfolder2" "$file1" "$testfolder2/$file1" > > + > > +echo "" > > +# Remove hard link parent pointer test > > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder2/$file1)" > > +rm $SCRATCH_MNT/$testfolder2/$file1 > > +_verify_parent "$testfolder1" "$file1_ln" "$testfolder1/$file1_ln" > > +_verify_no_parent "$file1" "$ino" "$testfolder1/$file1_ln" > > + > > +echo "" > > +# Rename parent pointer test > > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder1/$file1_ln)" > > +mv $SCRATCH_MNT/$testfolder1/$file1_ln > > $SCRATCH_MNT/$testfolder1/$file2 > > +_verify_parent "$testfolder1" "$file2" "$testfolder1/$file2" > > +_verify_no_parent "$file1_ln" "$ino" "$testfolder1/$file2" > > + > > +echo "" > > +# Over write parent pointer test > > +touch $SCRATCH_MNT/$testfolder2/$file3 > > +_verify_parent "$testfolder2" "$file3" "$testfolder2/$file3" > > +ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder2/$file3)" > > +mv -f $SCRATCH_MNT/$testfolder2/$file3 > > $SCRATCH_MNT/$testfolder1/$file2 > > +_verify_parent "$testfolder1" "$file2" "$testfolder1/$file2" > > + > > +# success, all done > > +status=0 > > +exit > > diff --git a/tests/xfs/554.out b/tests/xfs/554.out > > new file mode 100644 > > index 00000000..67ea9f2b > > --- /dev/null > > +++ b/tests/xfs/554.out > > @@ -0,0 +1,59 @@ > > +QA output created by 554 > > + > > +*** testfolder1 OK > > +*** testfolder1/file1 OK > > +*** testfolder1/file1 OK > > +*** Verified parent pointer: name:file1, namelen:5 > > +*** Parent pointer OK for child testfolder1/file1 > > + > > +*** testfolder2 OK > > +*** testfolder2/file1 OK > > +*** testfolder2/file1 OK > > +*** Verified parent pointer: name:file1, namelen:5 > > +*** Parent pointer OK for child testfolder2/file1 > > + > > +*** testfolder1 OK > > +*** testfolder1/file1_link OK > > +*** testfolder1/file1_link OK > > +*** Verified parent pointer: name:file1_link, namelen:10 > > +*** Parent pointer OK for child testfolder1/file1_link > > +*** testfolder1 OK > > +*** testfolder2/file1 OK > > +*** testfolder1/file1_link OK > > +*** Verified parent pointer: name:file1_link, namelen:10 > > +*** Parent pointer OK for child testfolder2/file1 > > +*** testfolder2 OK > > +*** testfolder1/file1_link OK > > +*** testfolder2/file1 OK > > +*** Verified parent pointer: name:file1, namelen:5 > > +*** Parent pointer OK for child testfolder1/file1_link > > +*** testfolder2 OK > > +*** testfolder2/file1 OK > > +*** testfolder2/file1 OK > > +*** Verified parent pointer: name:file1, namelen:5 > > +*** Parent pointer OK for child testfolder2/file1 > > + > > +*** testfolder1 OK > > +*** testfolder1/file1_link OK > > +*** testfolder1/file1_link OK > > +*** Verified parent pointer: name:file1_link, namelen:10 > > +*** Parent pointer OK for child testfolder1/file1_link > > +*** testfolder1/file1_link OK > > + > > +*** testfolder1 OK > > +*** testfolder1/file2 OK > > +*** testfolder1/file2 OK > > +*** Verified parent pointer: name:file2, namelen:5 > > +*** Parent pointer OK for child testfolder1/file2 > > +*** testfolder1/file2 OK > > + > > +*** testfolder2 OK > > +*** testfolder2/file3 OK > > +*** testfolder2/file3 OK > > +*** Verified parent pointer: name:file3, namelen:5 > > +*** Parent pointer OK for child testfolder2/file3 > > +*** testfolder1 OK > > +*** testfolder1/file2 OK > > +*** testfolder1/file2 OK > > +*** Verified parent pointer: name:file2, namelen:5 > > +*** Parent pointer OK for child testfolder1/file2 > > -- > > 2.25.1 > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 3/4] xfs: add multi link parent pointer test 2022-10-12 1:38 [PATCH v2 0/4] xfstests: add parent pointer tests Catherine Hoang 2022-10-12 1:38 ` [PATCH v2 1/4] common: add helpers for " Catherine Hoang 2022-10-12 1:38 ` [PATCH v2 2/4] xfs: add parent pointer test Catherine Hoang @ 2022-10-12 1:38 ` Catherine Hoang 2022-10-12 1:38 ` [PATCH v2 4/4] xfs: add parent pointer inject test Catherine Hoang 3 siblings, 0 replies; 10+ messages in thread From: Catherine Hoang @ 2022-10-12 1:38 UTC (permalink / raw) To: linux-xfs, fstests From: Allison Henderson <allison.henderson@oracle.com> Add a test to verify parent pointers while multiple links to a file are created and removed. Signed-off-by: Allison Henderson <allison.henderson@oracle.com> Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com> --- tests/xfs/555 | 96 +++++ tests/xfs/555.out | 1002 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1098 insertions(+) create mode 100755 tests/xfs/555 create mode 100644 tests/xfs/555.out diff --git a/tests/xfs/555 b/tests/xfs/555 new file mode 100755 index 00000000..36d286f8 --- /dev/null +++ b/tests/xfs/555 @@ -0,0 +1,96 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2022, Oracle and/or its affiliates. All Rights Reserved. +# +# FS QA Test 555 +# +# multi link parent pointer test +# +. ./common/preamble +_begin_fstest auto quick parent + +cleanup() +{ + cd / + rm -f $tmp.* +} + +full() +{ + echo "" >>$seqres.full + echo "*** $* ***" >>$seqres.full + echo "" >>$seqres.full +} + +# get standard environment, filters and checks +. ./common/filter +. ./common/reflink +. ./common/inject +. ./common/parent + +# Modify as appropriate +_supported_fs xfs +_require_scratch +_require_xfs_io_error_injection "larp" +_require_xfs_sysfs debug/larp +_require_xfs_parent +_require_xfs_io_command "parent" + +# real QA test starts here + +# Create a directory tree using a protofile and +# make sure all inodes created have parent pointers + +protofile=$tmp.proto + +cat >$protofile <<EOF +DUMMY1 +0 0 +: root directory +d--777 3 1 +: a directory +testfolder1 d--755 3 1 +file1 ---755 3 1 /dev/null +: done +$ +EOF + +if [ $? -ne 0 ] +then + _fail "failed to create test protofile" +fi + +_scratch_mkfs -f -n parent=1 -p $protofile >>$seqresres.full 2>&1 \ + || _fail "mkfs failed" +_check_scratch_fs + +_scratch_mount >>$seqres.full 2>&1 \ + || _fail "mount failed" + +testfolder1="testfolder1" +testfolder2="testfolder2" +file1="file1" +file2="file2" +file3="file3" +file4="file4" +file5="file5" +file1_ln="file1_link" + +echo "" +# Multi link parent pointer test +NLINKS=100 +for (( j=0; j<$NLINKS; j++ )); do + ln $SCRATCH_MNT/$testfolder1/$file1 $SCRATCH_MNT/$testfolder1/$file1_ln.$j + _verify_parent "$testfolder1" "$file1_ln.$j" "$testfolder1/$file1" + _verify_parent "$testfolder1" "$file1" "$testfolder1/$file1_ln.$j" +done +# Multi unlink parent pointer test +for (( j=$NLINKS-1; j<=0; j-- )); do + ino="$(stat -c '%i' $SCRATCH_MNT/$testfolder1/$file1_ln.$j)" + rm $SCRATCH_MNT/$testfolder1/$file1_ln.$j + _verify_no_parent "$file1_ln.$j" "$ino" "$testfolder1/$file1" +done + +# success, all done +status=0 +exit diff --git a/tests/xfs/555.out b/tests/xfs/555.out new file mode 100644 index 00000000..eb63ff3a --- /dev/null +++ b/tests/xfs/555.out @@ -0,0 +1,1002 @@ +QA output created by 555 + +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.0 OK +*** Verified parent pointer: name:file1_link.0, namelen:12 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.0 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.0 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.1 OK +*** Verified parent pointer: name:file1_link.1, namelen:12 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.1 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.1 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.2 OK +*** Verified parent pointer: name:file1_link.2, namelen:12 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.2 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.2 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.3 OK +*** Verified parent pointer: name:file1_link.3, namelen:12 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.3 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.3 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.4 OK +*** Verified parent pointer: name:file1_link.4, namelen:12 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.4 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.4 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.5 OK +*** Verified parent pointer: name:file1_link.5, namelen:12 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.5 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.5 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.6 OK +*** Verified parent pointer: name:file1_link.6, namelen:12 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.6 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.6 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.7 OK +*** Verified parent pointer: name:file1_link.7, namelen:12 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.7 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.7 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.8 OK +*** Verified parent pointer: name:file1_link.8, namelen:12 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.8 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.8 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.9 OK +*** Verified parent pointer: name:file1_link.9, namelen:12 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.9 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.9 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.10 OK +*** Verified parent pointer: name:file1_link.10, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.10 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.10 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.11 OK +*** Verified parent pointer: name:file1_link.11, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.11 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.11 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.12 OK +*** Verified parent pointer: name:file1_link.12, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.12 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.12 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.13 OK +*** Verified parent pointer: name:file1_link.13, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.13 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.13 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.14 OK +*** Verified parent pointer: name:file1_link.14, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.14 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.14 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.15 OK +*** Verified parent pointer: name:file1_link.15, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.15 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.15 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.16 OK +*** Verified parent pointer: name:file1_link.16, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.16 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.16 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.17 OK +*** Verified parent pointer: name:file1_link.17, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.17 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.17 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.18 OK +*** Verified parent pointer: name:file1_link.18, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.18 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.18 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.19 OK +*** Verified parent pointer: name:file1_link.19, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.19 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.19 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.20 OK +*** Verified parent pointer: name:file1_link.20, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.20 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.20 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.21 OK +*** Verified parent pointer: name:file1_link.21, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.21 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.21 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.22 OK +*** Verified parent pointer: name:file1_link.22, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.22 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.22 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.23 OK +*** Verified parent pointer: name:file1_link.23, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.23 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.23 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.24 OK +*** Verified parent pointer: name:file1_link.24, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.24 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.24 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.25 OK +*** Verified parent pointer: name:file1_link.25, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.25 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.25 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.26 OK +*** Verified parent pointer: name:file1_link.26, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.26 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.26 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.27 OK +*** Verified parent pointer: name:file1_link.27, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.27 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.27 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.28 OK +*** Verified parent pointer: name:file1_link.28, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.28 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.28 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.29 OK +*** Verified parent pointer: name:file1_link.29, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.29 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.29 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.30 OK +*** Verified parent pointer: name:file1_link.30, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.30 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.30 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.31 OK +*** Verified parent pointer: name:file1_link.31, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.31 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.31 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.32 OK +*** Verified parent pointer: name:file1_link.32, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.32 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.32 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.33 OK +*** Verified parent pointer: name:file1_link.33, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.33 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.33 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.34 OK +*** Verified parent pointer: name:file1_link.34, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.34 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.34 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.35 OK +*** Verified parent pointer: name:file1_link.35, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.35 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.35 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.36 OK +*** Verified parent pointer: name:file1_link.36, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.36 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.36 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.37 OK +*** Verified parent pointer: name:file1_link.37, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.37 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.37 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.38 OK +*** Verified parent pointer: name:file1_link.38, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.38 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.38 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.39 OK +*** Verified parent pointer: name:file1_link.39, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.39 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.39 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.40 OK +*** Verified parent pointer: name:file1_link.40, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.40 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.40 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.41 OK +*** Verified parent pointer: name:file1_link.41, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.41 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.41 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.42 OK +*** Verified parent pointer: name:file1_link.42, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.42 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.42 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.43 OK +*** Verified parent pointer: name:file1_link.43, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.43 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.43 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.44 OK +*** Verified parent pointer: name:file1_link.44, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.44 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.44 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.45 OK +*** Verified parent pointer: name:file1_link.45, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.45 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.45 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.46 OK +*** Verified parent pointer: name:file1_link.46, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.46 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.46 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.47 OK +*** Verified parent pointer: name:file1_link.47, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.47 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.47 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.48 OK +*** Verified parent pointer: name:file1_link.48, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.48 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.48 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.49 OK +*** Verified parent pointer: name:file1_link.49, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.49 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.49 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.50 OK +*** Verified parent pointer: name:file1_link.50, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.50 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.50 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.51 OK +*** Verified parent pointer: name:file1_link.51, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.51 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.51 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.52 OK +*** Verified parent pointer: name:file1_link.52, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.52 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.52 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.53 OK +*** Verified parent pointer: name:file1_link.53, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.53 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.53 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.54 OK +*** Verified parent pointer: name:file1_link.54, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.54 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.54 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.55 OK +*** Verified parent pointer: name:file1_link.55, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.55 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.55 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.56 OK +*** Verified parent pointer: name:file1_link.56, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.56 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.56 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.57 OK +*** Verified parent pointer: name:file1_link.57, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.57 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.57 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.58 OK +*** Verified parent pointer: name:file1_link.58, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.58 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.58 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.59 OK +*** Verified parent pointer: name:file1_link.59, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.59 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.59 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.60 OK +*** Verified parent pointer: name:file1_link.60, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.60 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.60 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.61 OK +*** Verified parent pointer: name:file1_link.61, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.61 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.61 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.62 OK +*** Verified parent pointer: name:file1_link.62, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.62 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.62 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.63 OK +*** Verified parent pointer: name:file1_link.63, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.63 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.63 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.64 OK +*** Verified parent pointer: name:file1_link.64, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.64 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.64 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.65 OK +*** Verified parent pointer: name:file1_link.65, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.65 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.65 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.66 OK +*** Verified parent pointer: name:file1_link.66, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.66 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.66 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.67 OK +*** Verified parent pointer: name:file1_link.67, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.67 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.67 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.68 OK +*** Verified parent pointer: name:file1_link.68, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.68 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.68 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.69 OK +*** Verified parent pointer: name:file1_link.69, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.69 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.69 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.70 OK +*** Verified parent pointer: name:file1_link.70, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.70 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.70 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.71 OK +*** Verified parent pointer: name:file1_link.71, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.71 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.71 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.72 OK +*** Verified parent pointer: name:file1_link.72, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.72 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.72 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.73 OK +*** Verified parent pointer: name:file1_link.73, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.73 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.73 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.74 OK +*** Verified parent pointer: name:file1_link.74, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.74 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.74 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.75 OK +*** Verified parent pointer: name:file1_link.75, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.75 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.75 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.76 OK +*** Verified parent pointer: name:file1_link.76, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.76 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.76 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.77 OK +*** Verified parent pointer: name:file1_link.77, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.77 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.77 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.78 OK +*** Verified parent pointer: name:file1_link.78, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.78 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.78 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.79 OK +*** Verified parent pointer: name:file1_link.79, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.79 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.79 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.80 OK +*** Verified parent pointer: name:file1_link.80, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.80 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.80 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.81 OK +*** Verified parent pointer: name:file1_link.81, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.81 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.81 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.82 OK +*** Verified parent pointer: name:file1_link.82, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.82 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.82 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.83 OK +*** Verified parent pointer: name:file1_link.83, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.83 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.83 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.84 OK +*** Verified parent pointer: name:file1_link.84, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.84 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.84 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.85 OK +*** Verified parent pointer: name:file1_link.85, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.85 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.85 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.86 OK +*** Verified parent pointer: name:file1_link.86, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.86 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.86 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.87 OK +*** Verified parent pointer: name:file1_link.87, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.87 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.87 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.88 OK +*** Verified parent pointer: name:file1_link.88, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.88 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.88 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.89 OK +*** Verified parent pointer: name:file1_link.89, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.89 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.89 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.90 OK +*** Verified parent pointer: name:file1_link.90, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.90 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.90 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.91 OK +*** Verified parent pointer: name:file1_link.91, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.91 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.91 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.92 OK +*** Verified parent pointer: name:file1_link.92, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.92 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.92 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.93 OK +*** Verified parent pointer: name:file1_link.93, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.93 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.93 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.94 OK +*** Verified parent pointer: name:file1_link.94, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.94 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.94 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.95 OK +*** Verified parent pointer: name:file1_link.95, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.95 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.95 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.96 OK +*** Verified parent pointer: name:file1_link.96, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.96 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.96 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.97 OK +*** Verified parent pointer: name:file1_link.97, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.97 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.97 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.98 OK +*** Verified parent pointer: name:file1_link.98, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.98 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.98 +*** testfolder1 OK +*** testfolder1/file1 OK +*** testfolder1/file1_link.99 OK +*** Verified parent pointer: name:file1_link.99, namelen:13 +*** Parent pointer OK for child testfolder1/file1 +*** testfolder1 OK +*** testfolder1/file1_link.99 OK +*** testfolder1/file1 OK +*** Verified parent pointer: name:file1, namelen:5 +*** Parent pointer OK for child testfolder1/file1_link.99 -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 4/4] xfs: add parent pointer inject test 2022-10-12 1:38 [PATCH v2 0/4] xfstests: add parent pointer tests Catherine Hoang ` (2 preceding siblings ...) 2022-10-12 1:38 ` [PATCH v2 3/4] xfs: add multi link " Catherine Hoang @ 2022-10-12 1:38 ` Catherine Hoang 3 siblings, 0 replies; 10+ messages in thread From: Catherine Hoang @ 2022-10-12 1:38 UTC (permalink / raw) To: linux-xfs, fstests From: Allison Henderson <allison.henderson@oracle.com> Add a test to verify parent pointers after an error injection and log replay. Signed-off-by: Allison Henderson <allison.henderson@oracle.com> Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com> --- tests/xfs/556 | 110 ++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/556.out | 14 ++++++ 2 files changed, 124 insertions(+) create mode 100755 tests/xfs/556 create mode 100644 tests/xfs/556.out diff --git a/tests/xfs/556 b/tests/xfs/556 new file mode 100755 index 00000000..47e55bd7 --- /dev/null +++ b/tests/xfs/556 @@ -0,0 +1,110 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2022, Oracle and/or its affiliates. All Rights Reserved. +# +# FS QA Test 556 +# +# parent pointer inject test +# +. ./common/preamble +_begin_fstest auto quick parent + +cleanup() +{ + cd / + rm -f $tmp.* +} + +full() +{ + echo "" >>$seqres.full + echo "*** $* ***" >>$seqres.full + echo "" >>$seqres.full +} + +# get standard environment, filters and checks +. ./common/filter +. ./common/reflink +. ./common/inject +. ./common/parent + +# Modify as appropriate +_supported_fs xfs +_require_scratch +_require_xfs_sysfs debug/larp +_require_xfs_io_error_injection "larp" +_require_xfs_parent +_require_xfs_io_command "parent" + +# real QA test starts here + +# Create a directory tree using a protofile and +# make sure all inodes created have parent pointers + +protofile=$tmp.proto + +cat >$protofile <<EOF +DUMMY1 +0 0 +: root directory +d--777 3 1 +: a directory +testfolder1 d--755 3 1 +file1 ---755 3 1 /dev/null +$ +: back in the root +testfolder2 d--755 3 1 +file2 ---755 3 1 /dev/null +: done +$ +EOF + +if [ $? -ne 0 ] +then + _fail "failed to create test protofile" +fi + +_scratch_mkfs -f -n parent=1 -p $protofile >>$seqres.full 2>&1 \ + || _fail "mkfs failed" +_check_scratch_fs + +_scratch_mount >>$seqres.full 2>&1 \ + || _fail "mount failed" + +testfolder1="testfolder1" +testfolder2="testfolder2" +file1="file1" +file2="file2" +file3="file3" +file4="file4" +file5="file5" +file1_ln="file1_link" + +echo "" + +# Create files +touch $SCRATCH_MNT/$testfolder1/$file4 +_verify_parent "$testfolder1" "$file4" "$testfolder1/$file4" + +# Inject error +_scratch_inject_error "larp" + +# Move files +mv $SCRATCH_MNT/$testfolder1/$file4 $SCRATCH_MNT/$testfolder2/$file5 2>&1 \ + | _filter_scratch + +# FS should be shut down, touch will fail +touch $SCRATCH_MNT/$testfolder2/$file5 2>&1 | _filter_scratch + +# Remount to replay log +_scratch_remount_dump_log >> $seqres.full + +# FS should be online, touch should succeed +touch $SCRATCH_MNT/$testfolder2/$file5 + +# Check files again +_verify_parent "$testfolder2" "$file5" "$testfolder2/$file5" + +# success, all done +status=0 +exit diff --git a/tests/xfs/556.out b/tests/xfs/556.out new file mode 100644 index 00000000..812330ee --- /dev/null +++ b/tests/xfs/556.out @@ -0,0 +1,14 @@ +QA output created by 556 + +*** testfolder1 OK +*** testfolder1/file4 OK +*** testfolder1/file4 OK +*** Verified parent pointer: name:file4, namelen:5 +*** Parent pointer OK for child testfolder1/file4 +mv: cannot stat 'SCRATCH_MNT/testfolder1/file4': Input/output error +touch: cannot touch 'SCRATCH_MNT/testfolder2/file5': Input/output error +*** testfolder2 OK +*** testfolder2/file5 OK +*** testfolder2/file5 OK +*** Verified parent pointer: name:file5, namelen:5 +*** Parent pointer OK for child testfolder2/file5 -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2022-10-14 1:24 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-10-12 1:38 [PATCH v2 0/4] xfstests: add parent pointer tests Catherine Hoang 2022-10-12 1:38 ` [PATCH v2 1/4] common: add helpers for " Catherine Hoang 2022-10-12 1:38 ` [PATCH v2 2/4] xfs: add parent pointer test Catherine Hoang 2022-10-12 3:02 ` Zorro Lang 2022-10-12 3:10 ` Zorro Lang 2022-10-13 19:55 ` Allison Henderson 2022-10-14 1:24 ` Zorro Lang 2022-10-13 19:07 ` Allison Henderson 2022-10-12 1:38 ` [PATCH v2 3/4] xfs: add multi link " Catherine Hoang 2022-10-12 1:38 ` [PATCH v2 4/4] xfs: add parent pointer inject test Catherine Hoang
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).