Files
apfstests/tests/xfs/054
T
Eryu Guan 4c99b91d0a xfs/054: only filter ROOT_INO at the beginning
In the test ROOT_INO is filtered out and/or replaced, but if
ROOT_INO is also 32, more "32"s are filtered and replaced than
expected. This happens to me when testing 512B block size XFS and 1k
block size CRC enabled XFS.

Fix it by filtering out only ROOT_INO at the beginning of a line,
and removing all "g" modifiers in sed expressions.

Also the ROOT_INO should be the root inode number of TEST_DIR not
SCRATCH_MNT.

Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2016-10-26 10:38:11 +08:00

105 lines
3.6 KiB
Bash
Executable File

#! /bin/bash
# FS QA Test 054
#
# Exercise the xfs_io inode command
#
#-----------------------------------------------------------------------
# Copyright (c) 2016 Red Hat, 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.*
}
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
# remove previous $seqres.full before test
rm -f $seqres.full
# real QA test starts here
# Modify as appropriate.
_supported_fs xfs
_supported_os Linux
_require_test
_require_xfs_io_command "inode"
# We know the root inode is there
ROOT_INO=`ls -id $TEST_DIR | awk '{print $1}'`
touch $TEST_DIR/file
$XFS_IO_PROG -c "inode" $TEST_DIR/file
$XFS_IO_PROG -c "inode -v" $TEST_DIR/file | \
grep -vw "^$ROOT_INO" | sed -e s/.*:/LAST:/
# These should fail, -n requires an inode
$XFS_IO_PROG -c "inode -n" $TEST_DIR/file 2>&1 | grep -q Query \
|| echo "bare -n succeeded"
$XFS_IO_PROG -c "inode -nv" $TEST_DIR/file 2>&1 | grep -q Query \
|| echo "bare -nv succeeded"
$XFS_IO_PROG -c "inode -n -v" $TEST_DIR/file 2>&1 | grep -q Query \
|| echo "bare -n -v succeeded"
# These fail too, requires a valid inode number
$XFS_IO_PROG -c "inode badnumber" $TEST_DIR/file | grep -q numeric \
|| echo "Bad inode number succeeded"
$XFS_IO_PROG -c "inode -v badnumber" $TEST_DIR/file | grep -q numeric \
|| echo "Bad inode number succeeded"
$XFS_IO_PROG -c "inode -n badnumber" $TEST_DIR/file | grep -q numeric \
|| echo "Bad inode number succeeded"
$XFS_IO_PROG -c "inode -nv badnumber" $TEST_DIR/file | grep -q numeric \
|| echo "Bad inode number succeeded"
$XFS_IO_PROG -c "inode -n -v badnumber" $TEST_DIR/file | grep -q numeric \
|| echo "Bad inode number succeeded"
# These should all work, and return $ROOT_INO or the next inode...
# grep out ROOT_INO (which is incorrect) when we should be getting next inode
$XFS_IO_PROG -c "inode $ROOT_INO" $TEST_DIR/file | \
sed -e s/$ROOT_INO/ROOT_INO/
$XFS_IO_PROG -c "inode -v $ROOT_INO" $TEST_DIR/file | \
sed -e s/$ROOT_INO/ROOT_INO/
$XFS_IO_PROG -c "inode -n $ROOT_INO" $TEST_DIR/file | \
grep -vw "^$ROOT_INO" | sed -e s/.*/NEXT/
$XFS_IO_PROG -c "inode -nv $ROOT_INO" $TEST_DIR/file | \
grep -vw "^$ROOT_INO" | sed -e s/.*:/NEXT:/
$XFS_IO_PROG -c "inode -n -v $ROOT_INO" $TEST_DIR/file | \
grep -vw "^$ROOT_INO" | sed -e s/.*:/NEXT:/
# Try one that doesn't exist, 2^64-2? Should get 0
$XFS_IO_PROG -c "inode 18446744073709551614" $TEST_DIR/file
$XFS_IO_PROG -c "inode -v 18446744073709551614" $TEST_DIR/file
$XFS_IO_PROG -c "inode -n 18446744073709551614" $TEST_DIR/file
$XFS_IO_PROG -c "inode -nv 18446744073709551614" $TEST_DIR/file
$XFS_IO_PROG -c "inode -n -v 18446744073709551614" $TEST_DIR/file
status=0
exit