+++ /dev/null
-#! /bin/bash
-# FS QA Test No. 114
-#
-# Test some parent ptr stuff
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it would be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#
-#-----------------------------------------------------------------------
-#
-
-seq=`basename $0`
-seqres=$RESULT_DIR/$seq
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1 # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
- cd /
- rm -f $tmp.*
-}
-
-_check_paths()
-{
- _path=$1 # might want to only check this path
-
- sync; sleep 1
- echo ""
- echo "Check parent"
- if ! $XFS_IO_PROG -x -c 'parent -c' $SCRATCH_MNT | _filter_num; then
- exit 1
- fi
-}
-
-_print_names()
-{
- echo ""
- echo "Print out hardlink names for given path, $1"
- echo ""
-
- $XFS_IO_PROG -x -c parent $1 | awk '/p_ino.*=/ {$3 = "inodeXXX"; print; next} {print}'
-}
-
-_test_create()
-{
- echo ""
- echo "Testing create"
- echo ""
-
- # Test out some creations
- cd $SCRATCH_MNT
- touch file1
-
- mkdir dir2
- touch dir2/file2
-
- mkdir dir2/dir3
- touch dir2/dir3/file3
-
- mkdir dir2/dir3/dir4
-
- p=dir2/dir3/dir4/file4
- touch $p
-
- #_print_names $p >>$seqres.full
- _print_names $p | tee -a $seqres.full
-
- _check_paths $SCRATCH_MNT/$p
-}
-
-_test_symlink()
-{
- echo ""
- echo "Testing symlink"
- echo ""
-
- d=sym1/sym2/sym3
- f=$d/sym4_f
-
- mkdir -p $d
- ln -s $f symlink1
- ln symlink1 hlink1
- ln symlink1 hlink2
- ln symlink1 hlink3
- _check_paths $SCRATCH_MNT/symlink1
- _check_paths $SCRATCH_MNT/hlink1
- _check_paths $SCRATCH_MNT/hlink2
- _check_paths $SCRATCH_MNT/hlink3
-}
-
-#
-# create hardlinks from the same dir
-# and some from different dirs
-#
-# test out removing hardlinks too
-#
-_test_hardlink()
-{
- echo ""
- echo "Testing hardlink"
- echo ""
-
- d=dir2/dir3/dir4
- d2=dir2/dir5/dir6
- mkdir -p $d
- mkdir -p $d2
- p=$d/file4
- touch $p
-
- # create hardlinks
- paths="$d/l1 $d/l2 $d/l3 $d2/l4 $d2/l5 $d2/l6"
- for x in $paths; do
- ln $p $x
- done
-
- _print_names $p >>$seqres.full
-
- echo ""
- echo "print out names and check after created hardlinks"
- echo ""
- for x in $paths; do
- _print_names $x | tee -a $seqres.full
- _check_paths $SCRATCH_MNT/$x
- done
-
- echo ""
- echo "now try removing half of the hardlinks"
- echo ""
- paths="$d/l1 $d/l2 $d/l3 $d2/l4 $d2/l5 $d2/l6"
- i=0
- for x in $paths; do
- let i=$i+1
- let j=$i%2
- if [ $j -eq 0 ]; then
- echo "rm'ing $x"
- rm $x
- fi
- done
-
- echo ""
- echo "print out names and check after removed hardlinks"
- echo ""
- for x in $paths; do
- if [ -e $x ]; then
- _print_names $x | tee -a $seqres.full
- _check_paths $SCRATCH_MNT/$x
- fi
- done
-
-}
-
-#
-# in dir, file1 to file2 where file2 does not exist
-# in dir, file1 to file2 where file2 does exist
-# dir/file1 to dir2/file2 where file2 does not exist
-# dir/file1 to dir2/file2 where file2 does exist
-# dir to dir2 where dir2 does not exist
-# dir to dir/dir3 - not allowed
-#
-_test_rename()
-{
- echo ""
- echo "Testing rename"
- echo ""
-
- echo ""
- echo "1. in dir, file1 to file2 where file2 does not exist"
- echo ""
- d1=$SCRATCH_MNT/ren1/ren2/ren3/ren4
- mkdir -p $d1
- p1=$d1/f1
- p2=$d1/f2
- touch $p1
- mv $p1 $p2
- _check_paths $p2
-
- echo ""
- echo "2. in dir, file1 to file2 where file2 does exist"
- echo ""
- touch $p1
- mv $p1 $p2
- _check_paths $p2
-
- echo ""
- echo "3. dir/file1 to dir2/file2 where file2 does not exist"
- echo ""
- d2=$SCRATCH_MNT/ren1/ren2/ren3/ren5
- mkdir -p $d2
- p3=$d2/f3
- touch $p1
- mv $p1 $p3
- _check_paths $p3
-
- echo ""
- echo "4. dir/file1 to dir2/file2 where file2 does exist"
- echo ""
- d2=$SCRATCH_MNT/ren1/ren2/ren3/ren5
- p3=$d2/f3
- touch $p1
- mv $p1 $p3
- _check_paths $p3
-
- echo ""
- echo "5. dir to dir2 where dir2 does not exist"
- echo ""
- d3=$SCRATCH_MNT/ren1/ren2/ren3/ren6
- mv $d1 $d3
- _check_paths $d3
-}
-
-_filter_num()
-{
- tee -a $seqres.full |\
- sed -e 's/[0-9][0-9]* inodes/I inodes/g' \
- -e 's/[0-9][0-9]* paths/P paths/g' \
- -e 's/seed = [0-9][0-9]*/seed = S/'
-}
-
-_test_fsstress()
-{
- echo ""
- echo "Testing fsstress"
- echo ""
-
- out=$SCRATCH_MNT/fsstress.$$
- count=1000
- args=`_scale_fsstress_args -z \
--f rmdir=10 -f link=10 -f creat=10 \
--f mkdir=10 -f rename=30 -f unlink=10 \
--f symlink=10 \
--n $count -d $out -p 3`
-
- echo "fsstress $args" | sed -e "s#$out#outdir#"
- if ! $FSSTRESS_PROG $args | _filter_num
- then
- echo " fsstress $args returned $?"
- cat $tmp.out | tee -a $seqres.full
- status=1
- fi
-
- _check_paths
-}
-
-_test_dirstress()
-{
- echo ""
- echo "Testing dirstress"
- echo ""
-
- out=$SCRATCH_MNT/dirstress.$$
- count=1000
-
- if ! mkdir $out
- then
- echo "!! couldn't mkdir $out"
- status=1
- exit
- fi
-
- args="-d $out -f $count -k -p 3 -n 1"
- echo "dirstress $args" | sed -e "s#$out#outdir#"
- if ! $here/src/dirstress $args >$tmp.out 2>&1 | _filter_num
- then
- echo " dirstress failed"
- echo "*** dirstress $args" | tee -a $seqres.full
- cat $tmp.out >>$seqres.full
- status=1
- exit
- fi
-
- args="-d $out -f $count -k -p 3 -n 5"
- echo "dirstress $args" | sed -e "s#$out#outdir#"
- if ! $here/src/dirstress $args >$tmp.out 2>&1 | _filter_num
- then
- echo " dirstress failed"
- echo "*** dirstress $args" | tee -a $seqres.full
- cat $tmp.out >>$seqres.full
- status=1
- exit
- fi
-
- _check_paths
-}
-
-# get standard environment, filters and checks
-. ./common/rc
-. ./common/filter
-. ./common/attr
-
-_supported_fs xfs
-_supported_os IRIX
-
-_require_scratch
-_require_attrs
-
-rm -f $seqres.full
-
-echo "mkfs"
-_scratch_mkfs_xfs >>$seqres.full 2>&1 \
- || _fail "mkfs scratch failed"
-_scratch_mkfs_xfs -i parent=1 >>$seqres.full 2>&1 \
- || _notrun "parent inodes not supported"
-
-echo "mount"
-_scratch_mount >>$seqres.full 2>&1 \
- || _fail "mount failed: $MOUNT_OPTIONS"
-
-# real QA test starts here
-
-verbose=false
-
-_test_create
-_test_hardlink
-_test_rename
-_test_symlink
-
-# stress testing with verification by parent checking programs
-_test_fsstress
-_test_dirstress
-
-# success, all done
-status=0
-exit
+++ /dev/null
-QA output created by 114
-mkfs
-mount
-
-Testing create
-
-
-Print out hardlink names for given path, dir2/dir3/dir4/file4
-
-p_ino = inodeXXX
-p_gen = 2
-p_reclen = 24
-p_name = "file4"
-
-Check parent
-succeeded checking I inodes
-
-Testing hardlink
-
-
-print out names and check after created hardlinks
-
-
-Print out hardlink names for given path, dir2/dir3/dir4/l1
-
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l4"
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l6"
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l5"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "file4"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l1"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l2"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l3"
-
-Check parent
-succeeded checking I inodes
-
-Print out hardlink names for given path, dir2/dir3/dir4/l2
-
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l4"
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l6"
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l5"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "file4"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l1"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l2"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l3"
-
-Check parent
-succeeded checking I inodes
-
-Print out hardlink names for given path, dir2/dir3/dir4/l3
-
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l4"
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l6"
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l5"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "file4"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l1"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l2"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l3"
-
-Check parent
-succeeded checking I inodes
-
-Print out hardlink names for given path, dir2/dir5/dir6/l4
-
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l4"
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l6"
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l5"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "file4"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l1"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l2"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l3"
-
-Check parent
-succeeded checking I inodes
-
-Print out hardlink names for given path, dir2/dir5/dir6/l5
-
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l4"
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l6"
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l5"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "file4"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l1"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l2"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l3"
-
-Check parent
-succeeded checking I inodes
-
-Print out hardlink names for given path, dir2/dir5/dir6/l6
-
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l4"
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l6"
-p_ino = inodeXXX
-p_gen = 4
-p_reclen = 24
-p_name = "l5"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "file4"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l1"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l2"
-p_ino = inodeXXX
-p_gen = 5
-p_reclen = 24
-p_name = "l3"
-
-Check parent
-succeeded checking I inodes
-
-now try removing half of the hardlinks
-
-rm'ing dir2/dir3/dir4/l2
-rm'ing dir2/dir5/dir6/l4
-rm'ing dir2/dir5/dir6/l6
-
-print out names and check after removed hardlinks
-
-
-Print out hardlink names for given path, dir2/dir3/dir4/l1
-
-p_ino = inodeXXX
-p_gen = 6
-p_reclen = 24
-p_name = "l5"
-p_ino = inodeXXX
-p_gen = 6
-p_reclen = 24
-p_name = "file4"
-p_ino = inodeXXX
-p_gen = 6
-p_reclen = 24
-p_name = "l1"
-p_ino = inodeXXX
-p_gen = 6
-p_reclen = 24
-p_name = "l3"
-
-Check parent
-succeeded checking I inodes
-
-Print out hardlink names for given path, dir2/dir3/dir4/l3
-
-p_ino = inodeXXX
-p_gen = 6
-p_reclen = 24
-p_name = "l5"
-p_ino = inodeXXX
-p_gen = 6
-p_reclen = 24
-p_name = "file4"
-p_ino = inodeXXX
-p_gen = 6
-p_reclen = 24
-p_name = "l1"
-p_ino = inodeXXX
-p_gen = 6
-p_reclen = 24
-p_name = "l3"
-
-Check parent
-succeeded checking I inodes
-
-Print out hardlink names for given path, dir2/dir5/dir6/l5
-
-p_ino = inodeXXX
-p_gen = 6
-p_reclen = 24
-p_name = "l5"
-p_ino = inodeXXX
-p_gen = 6
-p_reclen = 24
-p_name = "file4"
-p_ino = inodeXXX
-p_gen = 6
-p_reclen = 24
-p_name = "l1"
-p_ino = inodeXXX
-p_gen = 6
-p_reclen = 24
-p_name = "l3"
-
-Check parent
-succeeded checking I inodes
-
-Testing rename
-
-
-1. in dir, file1 to file2 where file2 does not exist
-
-
-Check parent
-succeeded checking I inodes
-
-2. in dir, file1 to file2 where file2 does exist
-
-
-Check parent
-succeeded checking I inodes
-
-3. dir/file1 to dir2/file2 where file2 does not exist
-
-
-Check parent
-succeeded checking I inodes
-
-4. dir/file1 to dir2/file2 where file2 does exist
-
-
-Check parent
-succeeded checking I inodes
-
-5. dir to dir2 where dir2 does not exist
-
-
-Check parent
-succeeded checking I inodes
-
-Testing symlink
-
-
-Check parent
-succeeded checking I inodes
-
-Check parent
-succeeded checking I inodes
-
-Check parent
-succeeded checking I inodes
-
-Check parent
-succeeded checking I inodes
-
-Testing fsstress
-
-fsstress -z -f rmdir=10 -f link=10 -f creat=10 -f mkdir=10 -f rename=30 -f unlink=10 -f symlink=10 -n 1000 -d outdir -p 3
-seed = S
-
-Check parent
-succeeded checking I inodes
-
-Testing dirstress
-
-dirstress -d outdir -f 1000 -k -p 3 -n 1
-dirstress -d outdir -f 1000 -k -p 3 -n 5
-
-Check parent
-succeeded checking I inodes
+++ /dev/null
-#! /bin/bash
-# FS QA Test No. 115
-#
-# Test out xfs_repair_ipaths
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it would be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#
-#-----------------------------------------------------------------------
-#
-
-seq=`basename $0`
-seqres=$RESULT_DIR/$seq
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1 # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
- cd /
- rm -f $tmp.*
-}
-
-# Example output:
-#
-# ~/attr -Fl a/b/c/d/foo
-# Attribute "0000000000180080 0000000000000001" has a 3 byte value for a/b/c/d/foo
-#
-# ~/attr -Fg "0000000000180080 0000000000000001" a/b/c/d/foo
-# Attribute "0000000000180080 0000000000000001" had a 3 byte value for a/b/c/d/foo:
-# foo
-#
-# ~/attr -Pg "0000000000180080 0000000000000001" a/b/c/d/foo
-# Attribute "0000000000180080 0000000000000001" had a 12 byte value for a/b/c/d/foo:
-# /a/b/c/d/foo
-#
-
-#
-# filter out inode numbers to ordinal numbers
-# (assumes they come in order)
-#
-_filter_inodes()
-{
- find $SCRATCH_MNT -exec stat -iq {} \; >$tmp.inodes
-
- sed -e 's/[()]//g' \
- -e 's/Attribute "[0-9][0-9]*/Attribute "INODE/' \
- | nawk -v inodefile=$tmp.inodes '
- BEGIN {
- i=0
- while (getline < inodefile > 0) {
- i++
- inodemap[$1] = i
- }
- }
- /inode:/ {
- for (i = 1; i <= NF; i++) {
- nextone = i+1
- if ($i == "inode:") {
- $nextone = inodemap[$nextone]
- }
- printf "%s ", $i
- }
- printf "\n"
- next
- }
- { print }
- '
-}
-
-_filter()
-{
- sed -e 's/inode: \([0-9][0-9]*\)/inode: N/g' \
- -e 's/Attribute "[0-9][0-9]*/Attribute "INODE/'
-}
-
-# get standard environment, filters and checks
-. ./common/rc
-. ./common/filter
-. ./common/attr
-
-_supported_fs xfs
-_supported_os IRIX
-
-_require_scratch
-_require_attrs
-
-rm -f $seqres.full
-
-echo "mkfs"
-_scratch_mkfs_xfs >>$seqres.full 2>&1 \
- || _fail "mkfs scratch failed"
-_scratch_mkfs_xfs -i paths=1 >>$seqres.full 2>&1 \
- || _notrun "i_paths not supported"
-
-echo "mount"
-_scratch_mount >>$seqres.full 2>&1 \
- || _fail "mount failed: $MOUNT_OPTIONS"
-
-# real QA test starts here
-
-verbose=false
-
-echo ""
-echo "--- create some files and directories to work on ---"
-echo ""
-cd $SCRATCH_MNT
-d=dir2/dir3/dir4
-mkdir -p $d
-touch file1
-touch dir2/file2
-touch dir2/dir3/file3
-touch $d/file4
-touch $d/file5
-touch $d/file6
-touch $d/file7
-touch $d/file8
-touch $d/file9
-
-_do_test()
-{
- echo ""
- echo "--- check all is ok before we start ---"
- echo ""
- xfs_check_ipaths $SCRATCH_MNT
- xfs_repair_ipaths -n $SCRATCH_MNT
-
- echo ""
- echo "--- now break some stuff ---"
- echo ""
- cnt=1
-
- echo ""
- echo "1. remove the EA"
- echo ""
- ${ATTR_PROG} -Fl dir2/file2
- stat_ino=`stat -iq dir2`
- attrname=`printf "%.16x %.16x" $stat_ino $cnt`
- #echo "attrname = $attrname"
- ${ATTR_PROG} -Fr "$attrname" dir2/file2
- ${ATTR_PROG} -Fl dir2/file2
-
- echo ""
- echo "2. change the EA name"
- echo ""
- ${ATTR_PROG} -Fl dir2/dir3/file3
- stat_ino=100
- attrname=`printf "%.16x %.16x" $stat_ino $cnt`
- attrvalue=file3
- ${ATTR_PROG} -Fs "$attrname" -V $attrvalue dir2/dir3/file3
- ${ATTR_PROG} -Fl dir2/dir3/file3
-
- echo ""
- echo "3. change the EA value"
- echo ""
- ${ATTR_PROG} -Fl $d/file4
- stat_ino=`stat -iq $d`
- attrname=`printf "%.16x %.16x" $stat_ino $cnt`
- attrvalue=woopdydoo
- ${ATTR_PROG} -Fs "$attrname" -V "$attrvalue" $d/file4
- ${ATTR_PROG} -Fl $d/file4
- ${ATTR_PROG} -Fg "$attrname" $d/file4
-
- echo ""
- echo "4. add an extra EA - diff name, same value"
- echo ""
- ${ATTR_PROG} -Fl $d/file5
- stat_ino=100
- attrname=`printf "%.16x %.16x" $stat_ino $cnt`
- attrvalue=file5
- ${ATTR_PROG} -Fs "$attrname" -V $attrvalue $d/file5
- ${ATTR_PROG} -Fl $d/file5
- ${ATTR_PROG} -Fg "$attrname" $d/file5
-
- echo ""
- echo "5. add an extra EA - diff name, diff value"
- echo ""
- ${ATTR_PROG} -Fl $d/file6
- stat_ino=100
- attrname=`printf "%.16x %.16x" $stat_ino $cnt`
- attrvalue=file600
- ${ATTR_PROG} -Fs "$attrname" -V $attrvalue $d/file6
- ${ATTR_PROG} -Fl $d/file6
- ${ATTR_PROG} -Fg "$attrname" $d/file6
-
- echo ""
- echo "6. give bad fmt'ed EA name and get rid of existing name"
- echo ""
- attrname=woof
- attrvalue=file7
- ${ATTR_PROG} -Fs "$attrname" -V $attrvalue $d/file7
- # remove old attrname
- cnt=1
- stat_ino=`stat -iq $d`
- attrname=`printf "%.16x %.16x" $stat_ino $cnt`
- ${ATTR_PROG} -Fr "$attrname" $d/file7
-
- echo ""
- echo "--- now check it ---"
- echo ""
-
- echo ""
- echo "xfs_check_ipaths"
- echo ""
- xfs_check_ipaths $SCRATCH_MNT
-
- echo ""
- echo "xfs_repair_ipaths"
- echo ""
- xfs_repair_ipaths -n $SCRATCH_MNT
-
- echo ""
- echo "--- now repair it ---"
- echo ""
-
- echo ""
- echo "xfs_repair_ipaths"
- echo ""
- xfs_repair_ipaths $SCRATCH_MNT
-
- echo ""
- echo "--- now check it again ---"
- echo ""
-
- echo ""
- echo ""
- echo "xfs_check_ipaths"
- echo ""
- xfs_check_ipaths $SCRATCH_MNT
-
- echo ""
- echo "xfs_repair_ipaths"
- echo ""
- xfs_repair_ipaths -n $SCRATCH_MNT
-}
-
-_do_test 2>&1 | tee $seqres.full | _filter_inodes
-
-# success, all done
-status=0
-exit
+++ /dev/null
-QA output created by 115
-mkfs
-mount
-
---- create some files and directories to work on ---
-
-
---- check all is ok before we start ---
-
-succeeded checking 13 inodes
-succeeded checking 13 paths
-
---- now break some stuff ---
-
-
-1. remove the EA
-
-Attribute "INODE 0000000000000001" has a 5 byte value for dir2/file2
-
-2. change the EA name
-
-Attribute "INODE 0000000000000001" has a 5 byte value for dir2/dir3/file3
-Attribute "INODE 0000000000000001" set to a 5 byte value for dir2/dir3/file3:
-file3
-Attribute "INODE 0000000000000001" has a 5 byte value for dir2/dir3/file3
-Attribute "INODE 0000000000000001" has a 5 byte value for dir2/dir3/file3
-
-3. change the EA value
-
-Attribute "INODE 0000000000000001" has a 5 byte value for dir2/dir3/dir4/file4
-Attribute "INODE 0000000000000001" set to a 9 byte value for dir2/dir3/dir4/file4:
-woopdydoo
-Attribute "INODE 0000000000000001" has a 9 byte value for dir2/dir3/dir4/file4
-Attribute "INODE 0000000000000001" had a 9 byte value for dir2/dir3/dir4/file4:
-woopdydoo
-
-4. add an extra EA - diff name, same value
-
-Attribute "INODE 0000000000000001" has a 5 byte value for dir2/dir3/dir4/file5
-Attribute "INODE 0000000000000001" set to a 5 byte value for dir2/dir3/dir4/file5:
-file5
-Attribute "INODE 0000000000000001" has a 5 byte value for dir2/dir3/dir4/file5
-Attribute "INODE 0000000000000001" has a 5 byte value for dir2/dir3/dir4/file5
-Attribute "INODE 0000000000000001" had a 5 byte value for dir2/dir3/dir4/file5:
-file5
-
-5. add an extra EA - diff name, diff value
-
-Attribute "INODE 0000000000000001" has a 5 byte value for dir2/dir3/dir4/file6
-Attribute "INODE 0000000000000001" set to a 7 byte value for dir2/dir3/dir4/file6:
-file600
-Attribute "INODE 0000000000000001" has a 5 byte value for dir2/dir3/dir4/file6
-Attribute "INODE 0000000000000001" has a 7 byte value for dir2/dir3/dir4/file6
-Attribute "INODE 0000000000000001" had a 7 byte value for dir2/dir3/dir4/file6:
-file600
-
-6. give bad fmt'ed EA name and get rid of existing name
-
-Attribute "woof" set to a 5 byte value for dir2/dir3/dir4/file7:
-file7
-
---- now check it ---
-
-
-xfs_check_ipaths
-
-inode-path for inode: 12 is missing
-inode-path for inode: 11 is incorrect - bad parent inode#
-inode-path for inode: 5 is incorrect - path non-existent
-inode-path for inode: 6 is incorrect - bad parent inode#
-inode-path for inode: 7 is incorrect - bad parent inode#
-inode-path for inode: 8 is corrupted
-num errors: 6
-
-xfs_repair_ipaths
-
-path "/mnt/scratch/dir2/dir3/dir4/file4" inode: 5 doesn't have an associated inode-path
-path "/mnt/scratch/dir2/dir3/dir4/file7" inode: 8 has corrupted inode-path
-path "/mnt/scratch/dir2/dir3/dir4/file7" inode: 8 doesn't have an associated inode-path
-path "/mnt/scratch/dir2/file2" inode: 12 doesn't have an associated inode-path
-extra inode-path for inode: 5
-extra inode-path for inode: 6
-extra inode-path for inode: 7
-extra inode-path for inode: 11
-
---- now repair it ---
-
-
-xfs_repair_ipaths
-
-path "/mnt/scratch/dir2/dir3/dir4/file4" inode: 5 doesn't have an associated inode-path
-path "/mnt/scratch/dir2/dir3/dir4/file7" inode: 8 has corrupted inode-path
-path "/mnt/scratch/dir2/dir3/dir4/file7" inode: 8 doesn't have an associated inode-path
-path "/mnt/scratch/dir2/file2" inode: 12 doesn't have an associated inode-path
-extra inode-path for inode: 5
-extra inode-path for inode: 6
-extra inode-path for inode: 7
-extra inode-path for inode: 11
-repairing inode-path on "/mnt/scratch/dir2/dir3/dir4/file4"
-repairing by removing bad inode-path on "/mnt/scratch/dir2/dir3/dir4/file7"
-repairing inode-path on "/mnt/scratch/dir2/dir3/dir4/file7"
-repairing inode-path on "/mnt/scratch/dir2/file2"
-repairing: removing extra inode-path for inode: 5
-repairing: removing extra inode-path for inode: 6
-repairing: removing extra inode-path for inode: 7
-repairing: removing extra inode-path for inode: 11
-
---- now check it again ---
-
-
-
-xfs_check_ipaths
-
-succeeded checking 13 inodes
-
-xfs_repair_ipaths
-
-succeeded checking 13 paths
111 ioctl
112 fuzzers
113 fuzzers
-114 parent attr stress
-115 parent attr
116 quota auto quick
117 fuzzers
118 auto quick fsr dangerous