Tests from UDFQA ported to FSQA.

simple attr tests for EAs.
This commit is contained in:
Andrew Jones
2004-09-15 05:57:50 +00:00
parent d83ba68c60
commit d60075c5e7
17 changed files with 3378 additions and 67 deletions
Executable
+259
View File
@@ -0,0 +1,259 @@
#! /bin/sh
# FS QA Test No. 097. Modifed from UDFQA test 033.
#
# simple attr tests for EAs:
# - set
# - get
# - list
# - remove
# Basic testing.
#
#-----------------------------------------------------------------------
# Copyright (c) 2000-2004 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; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will 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 to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA
#
# Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane,
# Mountain View, CA 94043, USA, or: http://www.sgi.com
#-----------------------------------------------------------------------
#
# creator
owner=ajones@sgi.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
TARGET_DIR=
trap "_cleanup; exit \$status" 0 1 2 3 15
_cleanup()
{
rm -f $tmp.*
cd $TARGET_DIR
rm -f foo
}
_umount_and_mount()
{
cd /
umount $TARGET_DIR
if [ "$FSTYP" == "xfs" ]; then
_test_mount
else
_scratch_mount
fi
cd $TARGET_DIR
}
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
# link correct .out file
# This is done bacause udf and xfs print attrs in different orders.
rm -rf $seq.out
if [ "$FSTYP" == "xfs" ]; then
ln -s $seq.out.xfs $seq.out
else
ln -s $seq.out.udf $seq.out
fi
# real QA test starts here
_supported_fs udf xfs
_supported_os IRIX
_require_scratch
_setup_testdir
TARGET_DIR=$SCRATCH_MNT
[ "$FSTYP" == "xfs" ] && TARGET_DIR=$TEST_DIR
cd $TARGET_DIR
echo "create file foo"
touch foo
echo "should be no EAs for foo:"
attr -l foo
echo "set EA <noise,woof>:"
attr -s noise -V woof foo
echo "set EA <colour,blue>:"
attr -s colour -V blue foo
echo "set EA <size,small>:"
attr -s size -V small foo
echo "list the EAs for foo: noise, colour, size"
attr -l foo
echo "check the list again for foo"
attr -l foo
echo "unmount the FS and see if EAs are persistent"
_umount_and_mount
echo "check the list again for foo after umount/mount"
attr -l foo
echo "get the value of the noise EA"
attr -g noise foo
echo "get the value of the colour EA which was removed earlier"
attr -g colour foo
echo "get the value of the size EA"
attr -g size foo
echo "remove the colour EA on foo"
attr -r colour foo
echo "list EAs for foo: noise, size"
attr -l foo
echo "get the value of the noise EA"
attr -g noise foo
echo "get the value of the colour EA which was removed earlier"
attr -g colour foo
echo "get the value of the size EA"
attr -g size foo
echo "list all the EAs again: noise, size"
attr -l foo
echo "change the value of the size EA from small to huge"
attr -s size -V huge foo
echo "get the size EA which should now have value huge"
attr -g size foo
echo "list EAs: noise, size"
attr -l foo
echo "remove the size EA from foo"
attr -r size foo
echo "list EAs: noise (size EA has been removed)"
attr -l foo
echo "get the noise EA: woof"
attr -g noise foo
echo "try removing non-existent EA named woof"
attr -r woof foo
echo "try removing already removed EA size"
attr -r size foo
echo "list EAs: noise"
attr -l foo
echo "try removing already removed EA colour"
attr -r colour foo
echo "list EAs: noise"
attr -l foo
echo "remove remaining EA noise"
attr -r noise foo
echo "list EAs: should be no EAs left now"
attr -l foo
echo "unmount the FS and see if EAs are persistent"
_umount_and_mount
echo "list EAs: should still be no EAs left"
attr -l foo
echo ""
echo "*** Test out the root namespace ***"
echo ""
echo "set EA <root:colour,marone>:"
attr -R -s colour -V marone foo
echo "set EA <user:colour,beige>:"
attr -s colour -V beige foo
echo "set EA <user:vomit,pizza>:"
attr -s vomit -V pizza foo
echo "set EA <root:noise,whack>:"
attr -R -s noise -V whack foo
echo "list root EAs: <root:colour,noise>:"
attr -R -l foo
echo "list user EAs: <user:colour,vomit>:"
attr -l foo
echo "get root EA colour: marone"
attr -R -g colour foo
echo "get root EA noise: whack"
attr -R -g noise foo
echo "get root EA vomit which is a user EA => find nothing"
attr -R -g vomit foo
echo ""
echo "unmount the FS and see if EAs are persistent"
echo ""
_umount_and_mount
echo "get root EA colour: marone"
attr -R -g colour foo
echo "get root EA noise: whack"
attr -R -g noise foo
echo "get user EA vomit: pizza"
attr -g vomit foo
echo "remove the root colour EA"
attr -R -r colour foo
echo "list root EAs: <root:noise>:"
attr -R -l foo
echo "list user EAs: <user:colour,vomit>:"
attr -l foo
echo "remove the final root EA noise"
attr -R -r noise foo
echo "list root EAs: none"
attr -R -l foo
cd /
_cleanup_testdir
# Check the filesystem
_check_scratch_fs
# optional stuff if your test has verbose output to help resolve problems
#echo
#echo "If failure, check $seq.full (this) and $seq.full.ok (reference)"
# success, all done
status=0
exit
+132
View File
@@ -0,0 +1,132 @@
QA output created by 097
create file foo
should be no EAs for foo:
set EA <noise,woof>:
Attribute "noise" set to a 4 byte value for foo:
woof
set EA <colour,blue>:
Attribute "colour" set to a 4 byte value for foo:
blue
set EA <size,small>:
Attribute "size" set to a 5 byte value for foo:
small
list the EAs for foo: noise, colour, size
Attribute "noise" has a 4 byte value for foo
Attribute "colour" has a 4 byte value for foo
Attribute "size" has a 5 byte value for foo
check the list again for foo
Attribute "noise" has a 4 byte value for foo
Attribute "colour" has a 4 byte value for foo
Attribute "size" has a 5 byte value for foo
unmount the FS and see if EAs are persistent
check the list again for foo after umount/mount
Attribute "noise" has a 4 byte value for foo
Attribute "colour" has a 4 byte value for foo
Attribute "size" has a 5 byte value for foo
get the value of the noise EA
Attribute "noise" had a 4 byte value for foo:
woof
get the value of the colour EA which was removed earlier
Attribute "colour" had a 4 byte value for foo:
blue
get the value of the size EA
Attribute "size" had a 5 byte value for foo:
small
remove the colour EA on foo
list EAs for foo: noise, size
Attribute "noise" has a 4 byte value for foo
Attribute "size" has a 5 byte value for foo
get the value of the noise EA
Attribute "noise" had a 4 byte value for foo:
woof
get the value of the colour EA which was removed earlier
attr_get: Attribute not found
Could not get "colour" for foo
get the value of the size EA
Attribute "size" had a 5 byte value for foo:
small
list all the EAs again: noise, size
Attribute "noise" has a 4 byte value for foo
Attribute "size" has a 5 byte value for foo
change the value of the size EA from small to huge
Attribute "size" set to a 4 byte value for foo:
huge
get the size EA which should now have value huge
Attribute "size" had a 4 byte value for foo:
huge
list EAs: noise, size
Attribute "noise" has a 4 byte value for foo
Attribute "size" has a 4 byte value for foo
remove the size EA from foo
list EAs: noise (size EA has been removed)
Attribute "noise" has a 4 byte value for foo
get the noise EA: woof
Attribute "noise" had a 4 byte value for foo:
woof
try removing non-existent EA named woof
attr_remove: Attribute not found
Could not remove "woof" for foo
try removing already removed EA size
attr_remove: Attribute not found
Could not remove "size" for foo
list EAs: noise
Attribute "noise" has a 4 byte value for foo
try removing already removed EA colour
attr_remove: Attribute not found
Could not remove "colour" for foo
list EAs: noise
Attribute "noise" has a 4 byte value for foo
remove remaining EA noise
list EAs: should be no EAs left now
unmount the FS and see if EAs are persistent
list EAs: should still be no EAs left
*** Test out the root namespace ***
set EA <root:colour,marone>:
Attribute "colour" set to a 6 byte value for foo:
marone
set EA <user:colour,beige>:
Attribute "colour" set to a 5 byte value for foo:
beige
set EA <user:vomit,pizza>:
Attribute "vomit" set to a 5 byte value for foo:
pizza
set EA <root:noise,whack>:
Attribute "noise" set to a 5 byte value for foo:
whack
list root EAs: <root:colour,noise>:
Attribute "colour" has a 6 byte value for foo
Attribute "noise" has a 5 byte value for foo
list user EAs: <user:colour,vomit>:
Attribute "colour" has a 5 byte value for foo
Attribute "vomit" has a 5 byte value for foo
get root EA colour: marone
Attribute "colour" had a 6 byte value for foo:
marone
get root EA noise: whack
Attribute "noise" had a 5 byte value for foo:
whack
get root EA vomit which is a user EA => find nothing
attr_get: Attribute not found
Could not get "vomit" for foo
unmount the FS and see if EAs are persistent
get root EA colour: marone
Attribute "colour" had a 6 byte value for foo:
marone
get root EA noise: whack
Attribute "noise" had a 5 byte value for foo:
whack
get user EA vomit: pizza
Attribute "vomit" had a 5 byte value for foo:
pizza
remove the root colour EA
list root EAs: <root:noise>:
Attribute "noise" has a 5 byte value for foo
list user EAs: <user:colour,vomit>:
Attribute "colour" has a 5 byte value for foo
Attribute "vomit" has a 5 byte value for foo
remove the final root EA noise
list root EAs: none
+132
View File
@@ -0,0 +1,132 @@
QA output created by 097
create file foo
should be no EAs for foo:
set EA <noise,woof>:
Attribute "noise" set to a 4 byte value for foo:
woof
set EA <colour,blue>:
Attribute "colour" set to a 4 byte value for foo:
blue
set EA <size,small>:
Attribute "size" set to a 5 byte value for foo:
small
list the EAs for foo: noise, colour, size
Attribute "size" has a 5 byte value for foo
Attribute "noise" has a 4 byte value for foo
Attribute "colour" has a 4 byte value for foo
check the list again for foo
Attribute "size" has a 5 byte value for foo
Attribute "noise" has a 4 byte value for foo
Attribute "colour" has a 4 byte value for foo
unmount the FS and see if EAs are persistent
check the list again for foo after umount/mount
Attribute "size" has a 5 byte value for foo
Attribute "noise" has a 4 byte value for foo
Attribute "colour" has a 4 byte value for foo
get the value of the noise EA
Attribute "noise" had a 4 byte value for foo:
woof
get the value of the colour EA which was removed earlier
Attribute "colour" had a 4 byte value for foo:
blue
get the value of the size EA
Attribute "size" had a 5 byte value for foo:
small
remove the colour EA on foo
list EAs for foo: noise, size
Attribute "size" has a 5 byte value for foo
Attribute "noise" has a 4 byte value for foo
get the value of the noise EA
Attribute "noise" had a 4 byte value for foo:
woof
get the value of the colour EA which was removed earlier
attr_get: Attribute not found
Could not get "colour" for foo
get the value of the size EA
Attribute "size" had a 5 byte value for foo:
small
list all the EAs again: noise, size
Attribute "size" has a 5 byte value for foo
Attribute "noise" has a 4 byte value for foo
change the value of the size EA from small to huge
Attribute "size" set to a 4 byte value for foo:
huge
get the size EA which should now have value huge
Attribute "size" had a 4 byte value for foo:
huge
list EAs: noise, size
Attribute "noise" has a 4 byte value for foo
Attribute "size" has a 4 byte value for foo
remove the size EA from foo
list EAs: noise (size EA has been removed)
Attribute "noise" has a 4 byte value for foo
get the noise EA: woof
Attribute "noise" had a 4 byte value for foo:
woof
try removing non-existent EA named woof
attr_remove: Attribute not found
Could not remove "woof" for foo
try removing already removed EA size
attr_remove: Attribute not found
Could not remove "size" for foo
list EAs: noise
Attribute "noise" has a 4 byte value for foo
try removing already removed EA colour
attr_remove: Attribute not found
Could not remove "colour" for foo
list EAs: noise
Attribute "noise" has a 4 byte value for foo
remove remaining EA noise
list EAs: should be no EAs left now
unmount the FS and see if EAs are persistent
list EAs: should still be no EAs left
*** Test out the root namespace ***
set EA <root:colour,marone>:
Attribute "colour" set to a 6 byte value for foo:
marone
set EA <user:colour,beige>:
Attribute "colour" set to a 5 byte value for foo:
beige
set EA <user:vomit,pizza>:
Attribute "vomit" set to a 5 byte value for foo:
pizza
set EA <root:noise,whack>:
Attribute "noise" set to a 5 byte value for foo:
whack
list root EAs: <root:colour,noise>:
Attribute "noise" has a 5 byte value for foo
Attribute "colour" has a 6 byte value for foo
list user EAs: <user:colour,vomit>:
Attribute "vomit" has a 5 byte value for foo
Attribute "colour" has a 5 byte value for foo
get root EA colour: marone
Attribute "colour" had a 6 byte value for foo:
marone
get root EA noise: whack
Attribute "noise" had a 5 byte value for foo:
whack
get root EA vomit which is a user EA => find nothing
attr_get: Attribute not found
Could not get "vomit" for foo
unmount the FS and see if EAs are persistent
get root EA colour: marone
Attribute "colour" had a 6 byte value for foo:
marone
get root EA noise: whack
Attribute "noise" had a 5 byte value for foo:
whack
get user EA vomit: pizza
Attribute "vomit" had a 5 byte value for foo:
pizza
remove the root colour EA
list root EAs: <root:noise>:
Attribute "noise" has a 5 byte value for foo
list user EAs: <user:colour,vomit>:
Attribute "vomit" has a 5 byte value for foo
Attribute "colour" has a 5 byte value for foo
remove the final root EA noise
list root EAs: none
Executable
+278
View File
@@ -0,0 +1,278 @@
#! /bin/sh
# FS QA Test No. 098. Modified from UDFQA test 035
#
# simple attr tests for EAs:
# - set
# - get
# - list
# - remove
# Basic testing.
# + udf_db checks.
# (033 + udf_db)
#
#-----------------------------------------------------------------------
# Copyright (c) 2000-2004 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; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will 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 to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA
#
# Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane,
# Mountain View, CA 94043, USA, or: http://www.sgi.com
#-----------------------------------------------------------------------
#
# creator
owner=ajones@sgi.com
seq=`basename $0`
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()
{
rm -f $tmp.*
}
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
_db_filter()
{
awk '
/<file_entry name=/ { fe_on=1 }
/<timestamp/ { ts_on=1; next }
/<\/timestamp/ { ts_on=0; next }
/<cksum/ { next }
/<desc_crc/ { next }
/<pos/ { next }
/<tag_loc/ { next }
/<lb_num/ { next }
fe_on == 1 && ts_on == 0 { print; next }
{ next }
'
}
_umount_check_mount()
{
cd /
umount $SCRATCH_MNT
udf_db -f $SCRATCH_DEV | _db_filter
_scratch_mount
cd $SCRATCH_MNT
}
# real QA test starts here
_supported_fs udf
_supported_os IRIX
_require_scratch
_setup_testdir
cd $SCRATCH_MNT
echo "create file foo"
echo "file_contents" >foo
cat foo
echo "should be no EAs for foo:"
attr -l foo
echo "set EA <noise,woof>:"
attr -s noise -V woof foo
echo "set EA <colour,blue>:"
attr -s colour -V blue foo
echo "set EA <size,small>:"
attr -s size -V small foo
echo "list the EAs for foo: noise, colour, size"
attr -l foo
echo "check the list again for foo"
attr -l foo
echo "unmount the FS and see if EAs are persistent"
_umount_check_mount
echo "check the list again for foo after umount/mount"
attr -l foo
echo "get the value of the noise EA"
attr -g noise foo
echo "get the value of the colour EA which was removed earlier"
attr -g colour foo
echo "get the value of the size EA"
attr -g size foo
echo "remove the colour EA on foo"
attr -r colour foo
echo "list EAs for foo: noise, size"
attr -l foo
echo "get the value of the noise EA"
attr -g noise foo
echo "get the value of the colour EA which was removed earlier"
attr -g colour foo
echo "get the value of the size EA"
attr -g size foo
echo "list all the EAs again: noise, size"
attr -l foo
echo "change the value of the size EA from small to huge"
attr -s size -V huge foo
echo "get the size EA which should now have value huge"
attr -g size foo
echo "list EAs: noise, size"
attr -l foo
echo "remove the size EA from foo"
attr -r size foo
echo "list EAs: noise (size EA has been removed)"
attr -l foo
echo "get the noise EA: woof"
attr -g noise foo
echo "try removing non-existent EA named woof"
attr -r woof foo
echo "try removing already removed EA size"
attr -r size foo
echo "list EAs: noise"
attr -l foo
echo "try removing already removed EA colour"
attr -r colour foo
echo "list EAs: noise"
attr -l foo
echo "remove remaining EA noise"
attr -r noise foo
echo "list EAs: should be no EAs left now"
attr -l foo
echo "unmount the FS and see if EAs are persistent"
_umount_check_mount
echo "list EAs: should still be no EAs left"
attr -l foo
echo ""
echo "*** Test out the root namespace ***"
echo ""
echo "set EA <root:colour,marone>:"
attr -R -s colour -V marone foo
echo "set EA <user:colour,beige>:"
attr -s colour -V beige foo
echo "set EA <user:vomit,pizza>:"
attr -s vomit -V pizza foo
echo "set EA <root:noise,whack>:"
attr -R -s noise -V whack foo
echo "list root EAs: <root:colour,noise>:"
attr -R -l foo
echo "list user EAs: <user:colour,vomit>:"
attr -l foo
echo "get root EA colour: marone"
attr -R -g colour foo
echo "get root EA noise: whack"
attr -R -g noise foo
echo "get root EA vomit which is a user EA => find nothing"
attr -R -g vomit foo
echo ""
echo "unmount the FS and see if EAs are persistent"
echo ""
_umount_check_mount
echo "get root EA colour: marone"
attr -R -g colour foo
echo "get root EA noise: whack"
attr -R -g noise foo
echo "get user EA vomit: pizza"
attr -g vomit foo
echo "remove the root colour EA"
attr -R -r colour foo
echo "list root EAs: <root:noise>:"
attr -R -l foo
echo "list user EAs: <user:colour,vomit>:"
attr -l foo
echo "remove the final root EA noise"
attr -R -r noise foo
echo "list root EAs: none"
attr -R -l foo
cd /
umount $SCRATCH_MNT
udf_db -f $SCRATCH_DEV | _db_filter
# Checks the udf filesystem
_check_udf_filesystem $SCRATCH_DEV
_scratch_mount
cd $SCRATCH_MNT
echo "delete the file foo - which will delete the associated streams"
rm foo
cd /
umount $SCRATCH_MNT
udf_db -f $SCRATCH_DEV | _db_filter
# Checks the udf filesystem
_check_udf_filesystem $SCRATCH_DEV
# optional stuff if your test has verbose output to help resolve problems
#echo
#echo "If failure, check $seq.full (this) and $seq.full.ok (reference)"
# success, all done
status=0
exit
+1594
View File
File diff suppressed because it is too large Load Diff
Executable
+344
View File
@@ -0,0 +1,344 @@
#! /bin/sh
# FS QA Test No. 099. Modified from UDFQA test 036.
#
# ACL test
#-----------------------------------------------------------------------
# Copyright (c) 2000-2004 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; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will 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 to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA
#
# Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane,
# Mountain View, CA 94043, USA, or: http://www.sgi.com
#-----------------------------------------------------------------------
#_acl_list
# modifier
owner=ajones@sgi.com
seq=`basename $0`
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
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.attr
runas=$here/src/runas
TARGET_DIR=$SCRATCH_MNT
[ "$FSTYP" == "xfs" ] && TARGET_DIR=$TEST_DIR
_cleanup()
{
rm -f $tmp.*
cd $TARGET_DIR
rm -rf $seq.dir1
cd /
}
# -----
# minimal access ACL has ACEs: USER_OBJ, GROUP_OBJ, OTHER_OBJ
# This is set with chacl(1) and can be changed by chmod(1).
#
# Test that this is being set for ACL and for std unix permissions
# Test that we can get back the same ACL.
# Test std permissions for rwx.
# -----
#
# Test out default ACLs and that the ACL is being PASSed
# onto the children of the dir.
#
# -----
# Test out access check for extended ACLs.
# -> 3 extra ACEs: MASK, GROUP, USER
# -> the GROUP compares with egid of process _and_ the supplementary
# groups (as found in /etc/group)
#
# Test that mask works for USER, GROUP, GROUP_OBJ
# Test that the ACE type priority is working
# -> this would be done by simultaneously matching on ACEs
# -> interesting if it allows user to specify ACEs in any order
#
rm -f $seq.full
#-------------------------------------------------------
# real QA test starts here
_supported_fs xfs udf
_supported_os IRIX
_acl_setup_ids
_acl_requirements
[ -x $runas ] || _notrun "$runas executable not found"
# get dir
#export FILE_SYS=xfs
_require_scratch
_setup_testdir
cd $TARGET_DIR
rm -rf $seq.dir1 # in case file is left over from previous runs.
mkdir $seq.dir1
cd $seq.dir1
echo ""
echo "=== Test minimal ACE ==="
echo "Setup file"
# Note: as this is a shell script,
# will need read and execute permission set
# in order to execute it.
touch file1
cat <<EOF >file1
#!/bin/sh
echo "Test was executed"
EOF
chmod u=rwx file1
chmod g=rw- file1
chmod o=r-- file1
chown $acl1.$acl2 file1
_acl_ls file1
echo ""
echo "--- Test get and set of ACL ---"
echo "Note: IRIX interface gave an empty ACL - Linux outputs an ACL"
_acl_list file1
echo "Try using single colon separator"
echo "Note: IRIX interface FAILs because of single colon - Linux one allows it"
chacl u::r--,g::rwx,o:rw- file1 2>&1
echo "Expect to PASS"
chacl u::r--,g::rwx,o::rw- file1 2>&1
_acl_list file1
echo ""
echo "--- Test sync of ACL with std permissions ---"
_acl_ls file1
chmod u+w file1
_acl_ls file1
_acl_list file1
echo ""
echo "--- Test owner permissions ---"
chacl u::r-x,g::---,o::--- file1 2>&1
_acl_list file1
# change to owner
echo "Expect to PASS"
$runas -u $acl1 -g $acl1 ./file1 2>&1
echo "Expect to FAIL"
$runas -u $acl2 -g $acl2 ./file1 2>&1
echo ""
echo "--- Test group permissions ---"
chacl u::---,g::r-x,o::--- file1 2>&1
_acl_list file1
echo "Expect to FAIL - acl1 is owner"
$runas -u $acl1 -g $acl1 ./file1 2>&1
echo "Expect to PASS - acl2 matches group"
$runas -u $acl2 -g $acl2 ./file1 2>&1
echo "Expect to PASS - acl2 matches sup group"
$runas -u $acl2 -g $acl3 -s $acl2 ./file1 2>&1
echo "Expect to FAIL - acl3 is not in group"
$runas -u $acl3 -g $acl3 ./file1 2>&1
echo ""
echo "--- Test other permissions ---"
chacl u::---,g::---,o::r-x file1 2>&1
_acl_list file1
echo "Expect to FAIL - acl1 is owner"
$runas -u $acl1 -g $acl1 ./file1 2>&1
echo "Expect to FAIL - acl2 is in group"
$runas -u $acl2 -g $acl2 ./file1 2>&1
echo "Expect to FAIL - acl2 is in sup. group"
$runas -u $acl2 -g $acl3 -s $acl2 ./file1 2>&1
echo "Expect to PASS - acl3 is not owner or in group"
$runas -u $acl3 -g $acl3 ./file1 2>&1
#-------------------------------------------------------
echo ""
echo "=== Test Extended ACLs ==="
echo ""
echo "--- Test adding a USER ACE ---"
echo "Expect to FAIL as no MASK provided"
chacl u::---,g::---,o::---,u:$acl2:r-x file1 2>&1 | _acl_filter_id
echo "Ensure that ACL has not been changed"
_acl_list file1
echo "Expect to PASS - USER ACE matches user"
chacl u::---,g::---,o::---,u:$acl2:r-x,m::rwx file1 2>&1
_acl_list file1
$runas -u $acl2 -g $acl2 ./file1 2>&1
echo "Expect to FAIL - USER ACE does not match user"
$runas -u $acl3 -g $acl3 ./file1 2>&1
echo ""
echo "--- Test adding a GROUP ACE ---"
echo "Expect to FAIL as no MASK provided"
chacl u::---,g::---,o::---,g:$acl2:r-x file1 2>&1 | _acl_filter_id
echo "Ensure that ACL has not been changed"
_acl_list file1
chacl u::---,g::---,o::---,g:$acl2:r-x,m::rwx file1 2>&1
_acl_list file1 | _acl_filter_id
echo "Expect to PASS - GROUP ACE matches group"
$runas -u $acl2 -g $acl2 ./file1 2>&1
echo "Expect to PASS - GROUP ACE matches sup group"
$runas -u $acl2 -g $acl1 -s $acl2 ./file1 2>&1
echo "Expect to FAIL - GROUP ACE does not match group"
$runas -u $acl3 -g $acl3 ./file1 2>&1
#-------------------------------------------------------
echo ""
echo "--- Test MASK ---"
# group
chacl u::---,g::---,o::---,g:$acl2:r-x,m::-w- file1 2>&1
_acl_list file1
echo "Expect to FAIL as MASK prohibits execution"
$runas -u $acl2 -g $acl2 ./file1 2>&1
# user
chacl u::---,g::---,o::---,u:$acl2:r-x,m::-w- file1 2>&1
echo "Expect to FAIL as MASK prohibits execution"
$runas -u $acl2 -g $acl2 ./file1 2>&1
# user
chacl u::---,g::---,o::---,u:$acl2:r-x,m::r-x file1 2>&1
echo "Expect to PASS as MASK allows execution"
$runas -u $acl2 -g $acl2 ./file1 2>&1
#-------------------------------------------------------
echo ""
echo "--- Test ACE priority ---"
chacl o::rwx,g::rwx,u:$acl1:rwx,u::---,m::rwx file1 2>&1
echo "Expect to FAIL as should match on owner"
$runas -u $acl1 -g $acl2 ./file1 2>&1
chacl o::---,g::---,u:$acl2:rwx,u::---,m::rwx file1 2>&1
echo "Expect to PASS as should match on user"
$runas -u $acl2 -g $acl2 ./file1 2>&1
#-------------------------------------------------------
echo ""
echo "=== Test can read ACLs without access permissions ==="
# This was a bug in kernel code where syscred wasn't being used
# to override the capabilities
chacl o::---,g::---,u::--- file1 2>&1
_acl_list file1
#-------------------------------------------------------
echo ""
echo "=== Test Default ACLs ==="
# make test clearer by testing with and without umask
umask 0
mkdir acldir
chacl -b "u::rwx,g::rwx,o::rwx" "u::r-x,g::r--,o::---" acldir 2>&1
_acl_list acldir
cd acldir
touch file2
_acl_ls file2
_acl_list file2
#ensure that umask is not having an effect
#so set it and see
umask 722
touch file3
_acl_ls file3
_acl_list file3
cd ..
umask 022
#-------------------------------------------------------
echo ""
echo "=== Removing ACLs ==="
_acl_list file1
_acl_list acldir
_acl_list acldir/file2
echo "Remove ACLs..."
chacl -R file1
chacl -B acldir
chacl -R acldir/file2
echo "Note: IRIX interface would mean empty ACLs - Linux would show mode ACLs"
_acl_list file1
_acl_list acldir
_acl_list acldir/file2
#-------------------------------------------------------
echo ""
echo "=== Test out error messages for ACL text parsing ==="
touch file1
set -x
chacl u file1
chacl u: file1
chacl u:rumpledumpleunknownuser file1
chacl u:rumpledumpleunknownuser: file1
chacl g:rumpledumpleunknowngrp file1
chacl g:rumpledumpleunknowngrp: file1
chacl o:user1:rwx file1
chacl m:user1:rwx file1
chacl a::rwx file1
set +x
#-------------------------------------------------------
echo ""
echo "=== Test out large ACLs ==="
touch largeaclfile
XFS_ACL_MAX_ENTRIES=25
num_aces_pre=`expr $XFS_ACL_MAX_ENTRIES - 1`
num_aces_post=`expr $XFS_ACL_MAX_ENTRIES + 1`
acl1=`_create_n_aces $num_aces_pre`
acl2=`_create_n_aces $XFS_ACL_MAX_ENTRIES`
acl3=`_create_n_aces $num_aces_post`
echo "1 below xfs acl max"
chacl $acl1 largeaclfile
_acl_list largeaclfile | _filter_aces
echo "xfs acl max"
chacl $acl2 largeaclfile
_acl_list largeaclfile | _filter_aces
echo "1 above xfs acl max"
chacl $acl3 largeaclfile
_acl_list largeaclfile | _filter_aces
#-------------------------------------------------------
if [ "$FSTYP" == "udf" ]; then
cd /
umount $TARGET_DIR
# Check the filesystem
_check_scratch_fs
fi
# success, all done
status=0
exit
+215
View File
@@ -0,0 +1,215 @@
QA output created by 099
=== Test minimal ACE ===
Setup file
-rwxrw-r-- id1 id2 file1
--- Test get and set of ACL ---
Note: IRIX interface gave an empty ACL - Linux outputs an ACL
file1 []
Try using single colon separator
Note: IRIX interface FAILs because of single colon - Linux one allows it
chacl: "u::r--,g::rwx,o:rw-" is an invalid ACL specification.
Expect to PASS
file1 [u::r--,g::rwx,o::rw-]
--- Test sync of ACL with std permissions ---
-r--rwxrw-+ id1 id2 file1
-rw-rwxrw-+ id1 id2 file1
file1 [u::rw-,g::rwx,o::rw-]
--- Test owner permissions ---
file1 [u::r-x,g::---,o::---]
Expect to PASS
Test was executed
Expect to FAIL
./file1: Permission denied
--- Test group permissions ---
file1 [u::---,g::r-x,o::---]
Expect to FAIL - acl1 is owner
./file1: Permission denied
Expect to PASS - acl2 matches group
Test was executed
Expect to PASS - acl2 matches sup group
Test was executed
Expect to FAIL - acl3 is not in group
./file1: Permission denied
--- Test other permissions ---
file1 [u::---,g::---,o::r-x]
Expect to FAIL - acl1 is owner
./file1: Permission denied
Expect to FAIL - acl2 is in group
./file1: Permission denied
Expect to FAIL - acl2 is in sup. group
./file1: Permission denied
Expect to PASS - acl3 is not owner or in group
Test was executed
=== Test Extended ACLs ===
--- Test adding a USER ACE ---
Expect to FAIL as no MASK provided
chacl: error setting access acl on "file1":Invalid argument
Ensure that ACL has not been changed
file1 [u::---,g::---,o::r-x]
Expect to PASS - USER ACE matches user
file1 [u::---,g::---,o::---,u:id2:r-x,m::rwx]
Test was executed
Expect to FAIL - USER ACE does not match user
./file1: Permission denied
--- Test adding a GROUP ACE ---
Expect to FAIL as no MASK provided
chacl: error setting access acl on "file1":Invalid argument
Ensure that ACL has not been changed
file1 [u::---,g::---,o::---,u:id2:r-x,m::rwx]
file1 [u::---,g::---,o::---,g:id2:r-x,m::rwx]
Expect to PASS - GROUP ACE matches group
Test was executed
Expect to PASS - GROUP ACE matches sup group
Test was executed
Expect to FAIL - GROUP ACE does not match group
./file1: Permission denied
--- Test MASK ---
file1 [u::---,g::---,o::---,g:id2:r-x,m::-w-]
Expect to FAIL as MASK prohibits execution
./file1: Permission denied
Expect to FAIL as MASK prohibits execution
./file1: Permission denied
Expect to PASS as MASK allows execution
Test was executed
--- Test ACE priority ---
Expect to FAIL as should match on owner
./file1: Permission denied
Expect to PASS as should match on user
Test was executed
=== Test can read ACLs without access permissions ===
file1 [o::---,g::---,u::---]
=== Test Default ACLs ===
acldir [u::rwx,g::rwx,o::rwx/u::r-x,g::r--,o::---]
-r--r-----+ 0 0 file2
file2 [u::r--,g::r--,o::---]
-r--r-----+ 0 0 file3
file3 [u::r--,g::r--,o::---]
=== Removing ACLs ===
file1 [o::---,g::---,u::---]
acldir [u::rwx,g::rwx,o::rwx/u::r-x,g::r--,o::---]
acldir/file2 [u::r--,g::r--,o::---]
Remove ACLs...
Note: IRIX interface would mean empty ACLs - Linux would show mode ACLs
file1 []
acldir []
acldir/file2 []
=== Test out error messages for ACL text parsing ===
+ chacl u file1
chacl: "u" is an invalid ACL specification.
+ chacl u: file1
chacl: "u:" is an invalid ACL specification.
+ chacl u:rumpledumpleunknownuser file1
chacl: "u:rumpledumpleunknownuser" is an invalid ACL specification.
+ chacl u:rumpledumpleunknownuser: file1
chacl: "u:rumpledumpleunknownuser:" is an invalid ACL specification.
+ chacl g:rumpledumpleunknowngrp file1
chacl: "g:rumpledumpleunknowngrp" is an invalid ACL specification.
+ chacl g:rumpledumpleunknowngrp: file1
chacl: "g:rumpledumpleunknowngrp:" is an invalid ACL specification.
+ chacl o:user1:rwx file1
chacl: "o:user1:rwx" is an invalid ACL specification.
+ chacl m:user1:rwx file1
chacl: "m:user1:rwx" is an invalid ACL specification.
+ chacl a::rwx file1
chacl: "a::rwx" is an invalid ACL specification.
=== Test out large ACLs ===
1 below xfs acl max
largeaclfile
user::rwx
group::rwx
other::rwx
mask::rwx
user:20:rwx
user:19:rwx
user:18:rwx
user:17:rwx
user:16:rwx
user:15:rwx
user:14:rwx
user:13:rwx
user:12:rwx
user:11:rwx
user:10:rwx
user:9:rwx
user:8:rwx
user:7:rwx
user:6:rwx
user:5:rwx
user:4:rwx
user:3:rwx
user:2:rwx
user:1:rwx
xfs acl max
largeaclfile
user::rwx
group::rwx
other::rwx
mask::rwx
user:21:rwx
user:20:rwx
user:19:rwx
user:18:rwx
user:17:rwx
user:16:rwx
user:15:rwx
user:14:rwx
user:13:rwx
user:12:rwx
user:11:rwx
user:10:rwx
user:9:rwx
user:8:rwx
user:7:rwx
user:6:rwx
user:5:rwx
user:4:rwx
user:3:rwx
user:2:rwx
user:1:rwx
1 above xfs acl max
chacl: error setting access acl on "largeaclfile":Error 0
largeaclfile
user::rwx
group::rwx
other::rwx
mask::rwx
user:21:rwx
user:20:rwx
user:19:rwx
user:18:rwx
user:17:rwx
user:16:rwx
user:15:rwx
user:14:rwx
user:13:rwx
user:12:rwx
user:11:rwx
user:10:rwx
user:9:rwx
user:8:rwx
user:7:rwx
user:6:rwx
user:5:rwx
user:4:rwx
user:3:rwx
user:2:rwx
user:1:rwx
Executable
+92
View File
@@ -0,0 +1,92 @@
#! /bin/sh
# FS QA Test No. 093. Modified from UDF QA test 030.
#
# Test whether a tarred directory structure can be untarred onto
# a UDF file system.
#
#-----------------------------------------------------------------------
# Copyright (c) 2000-2004 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; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will 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 to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA
#
# Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane,
# Mountain View, CA 94043, USA, or: http://www.sgi.com
#-----------------------------------------------------------------------
#
# creator
owner=ajones@sgi.com
seq=`basename $0`
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
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
_cleanup()
{
rm -f $tmp.* $testfile
}
# real QA test starts here
_supported_fs xfs udf nfs
_supported_os IRIX Linux
# Use _populate_fs() in common.rc to create a directory structure.
TEMP_DIR=/tmp
TAR_FILE=temp.tar
NDIRS=3
NFILES=6
DEPTH=5
POPULATED_DIR=$TEMP_DIR/populate_root
SIZE=10
rm -f $seq.full
# Clean up if file exist from prevous run
rm -rf $POPULATED_DIR
rm -f $TEMP_DIR/$TAR_FILE
# Create the new directory structure
_populate_fs -n $NDIRS -f $NFILES -d $DEPTH -r $POPULATED_DIR -s $SIZE >>$here/$seq.full 2>&1
# Then tar up the directory structure
tar -cvf $TEMP_DIR/$TAR_FILE $POPULATED_DIR >>$here/$seq.full 2>&1
# create f/s
_require_scratch
_setup_testdir
# untar on f/s
cd $testdir
tar -xRvf $TEMP_DIR/$TAR_FILE >>$here/$seq.full 2>&1
cd $here
# use diff -qr to compare
ls -R -l ${testdir}${POPULATED_DIR} >>$here/$seq.full 2>&1
diff -qr $POPULATED_DIR ${testdir}${POPULATED_DIR}
cd /
_cleanup_testdir
_check_scratch_fs
status=0
exit
+1
View File
@@ -0,0 +1 @@
QA output created by 100
Executable
+66
View File
@@ -0,0 +1,66 @@
#! /bin/sh
# FS QA Test No. 101. Modified from UDFQA test 029.
#
# This tests mkfs_udf with -s [SIZE] option.
#
#-----------------------------------------------------------------------
# Copyright (c) 2000-2004 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; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will 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 to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA
#
# Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane,
# Mountain View, CA 94043, USA, or: http://www.sgi.com
#-----------------------------------------------------------------------
#
# creator
owner=ajones@sgi.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
FS_SIZE=2048
trap "_cleanup; exit \$status" 0 1 2 3 15
_cleanup()
{
rm -f $tmp.*
}
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
# real QA test starts here
_supported_fs udf
_supported_os IRIX
MKFS_OPTIONS="-s $FS_SIZE"
_require_scratch
_setup_udf_scratchdir
umount $SCRATCH_MNT
# Inspect the space bitmap
echo bitmap | udf_db -c - $SCRATCH_DEV
# Run udf_test
_check_udf_filesystem $SCRATCH_DEV $FS_SIZE
# success, all done
status=0
exit
+19
View File
@@ -0,0 +1,19 @@
QA output created by 101
<space_bitmap name="unalloc">
<desc_tag name="tag">
<id val="264" />
<descriptor_ver val="3" />
<cksum val="13" />
<reserved val="0" />
<serial_num val="0" />
<desc_crc val="0" />
<desc_crc_len val="0" />
<tag_loc val="1" />
</desc_tag>
<num_bits val="1500" />
<num_bytes val="188" />
<bitmap>
0-3 [4]: 0
4-1499 [1496]: 1
</bitmap>
</space_bitmap>
Executable
+63
View File
@@ -0,0 +1,63 @@
#! /bin/sh
# FS QA Test No. 102
#
# This tests mkfs_udf/mkudffs and the device detection code
# Modified from UDFQA test 031.
#
#-----------------------------------------------------------------------
# Copyright (c) 2000-2004 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; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will 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 to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA
#
# Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane,
# Mountain View, CA 94043, USA, or: http://www.sgi.com
#-----------------------------------------------------------------------
#
# creator
owner=ajones@sgi.com
seq=`basename $0`
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()
{
rm -f $tmp.*
cd /
_cleanup_testdir
}
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
# real QA test starts here
_supported_fs udf
_supported_os Linux IRIX
_require_scratch
_setup_udf_scratchdir
# Checks the udf filesystem
_check_udf_filesystem $SCRATCH_DEV
echo "Finished"
# success, all done
status=0
exit
+2
View File
@@ -0,0 +1,2 @@
QA output created by 102
Finished
+2 -1
View File
@@ -23,7 +23,8 @@ Preparing system for tests (IRIX and Linux):
mkfs_udf and udf_db for IRIX and mkudffs for Linux. Also download and
build the Philips UDF Verification Software from
http://www.extra.research.philips.com/udf/, then copy the udf_test
binary to xfstests/src/.
binary to xfstests/src/. If you wish to disable UDF verification test
set the environment variable DISABLE_UDF_TEST to 1.
- create two partitions to use for testing
+46 -32
View File
@@ -1,37 +1,24 @@
##/bin/sh
#-----------------------------------------------------------------------
# Copyright (c) 2000-2004 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; either version 2 of the License, or
# (at your option) any later version.
#
# Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of version 2 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.
#
# Further, this software is distributed without any warranty that it is
# free of the rightful claim of any third person regarding infringement
# or the like. Any license provided herein, whether implied or
# otherwise, applies only to this software file. Patent licenses, if
# any, provided herein do not apply to combinations of this program with
# other software, or any other product whatsoever.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write the Free Software Foundation, Inc., 59
# Temple Place - Suite 330, Boston MA 02111-1307, USA.
#
# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
# Mountain View, CA 94043, or:
#
# http://www.sgi.com
#
# For further information regarding this notice, see:
#
# http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
# This program is distributed in the hope that it will 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 to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA
#
# Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane,
# Mountain View, CA 94043, USA, or: http://www.sgi.com
#-----------------------------------------------------------------------
# common extended attribute and ACL support
# pick three unused user/group ids, store them as $acl[1-3]
@@ -80,7 +67,7 @@ _acl_list()
_file1=$1
if [ $HOSTOS = "IRIX" ]; then
ls -D $_file1 | _acl_filter_id
ls -dD $_file1 | _acl_filter_id
else
chacl -l $_file1 | _acl_filter_id
fi
@@ -137,5 +124,32 @@ _acl_requirements()
fi
}
# filter user ace names to user ids
#
_filter_aces()
{
tr '\[' '\012' |\
tr ']' '\012' |\
tr ',' '\012' |\
$AWK_PROG '
BEGIN {
FS=":"
while ( getline <"/etc/passwd" > 0 ) {
idlist[$1] = $3
}
}
/^u/ { if ($2 in idlist) sub($2, idlist[$2]); print; next}
{print}
' |\
sed -e 's/u:/user:/' -e 's/g:/group:/' -e 's/o:/other:/' -e 's/m:/mask:/'
}
_list_acl()
{
file=$1
ls -dD $file | _acl_filter_id
}
# make sure this script returns success
/bin/true
+106 -16
View File
@@ -764,13 +764,20 @@ _check_xfs_filesystem()
return 0
}
# Filter the knowen errors the UDF Verifier reports.
_udf_test_known_error_filter()
{
egrep -v "PVD 60 Error: Interchange Level: 1, Maximum Interchange Level: 0|FSD 28 Error: Interchange Level: 1, Maximum Interchange Level: 1,|PVD 72 Warning: Volume Set Identifier: \"\*IRIX UDF\",|Warning: [0-9]+ unused blocks NOT marked as unallocated."
}
_check_udf_filesystem()
{
[ "$DISABLE_UDF_TEST" == "1" ] && return
if [ $# -ne 1 -a $# -ne 2 ]
then
echo "Usage: _check_fs device [last_block]" 1>&2
echo "Usage: _check_udf_filesystem device [last_block]" 1>&2
exit 1
fi
@@ -791,17 +798,13 @@ _check_udf_filesystem()
OPT_ARG="-lastvalidblock $LAST_BLOCK"
fi
# Output messages format:
# Error messages contain : "Error:" or "error:"
# Warning messages contain : "Warning:" or "warning:"
# Attention messages contain : "Note:" or "note:"
# Message continuation lines start with a "-" character.
rm -f $seq.checkfs
sleep 1 # Due to a problem with time stamps in udf_test
$here/src/udf_test $OPT_ARG $device | tee $here/$seq.checkfs | \
egrep -i "error:|warning:|Error count:|Warning count:" | \
egrep -v "Error count: 0|Warning count: 0"
$here/src/udf_test $OPT_ARG $device | tee $here/$seq.checkfs | egrep "Error|Warning" | \
_udf_test_known_error_filter | \
egrep -iv "Error count:.*[0-9]+.*total occurrences:.*[0-9]+|Warning count:.*[0-9]+.*total occurrences:.*[0-9]+" | \
sed "s/^.*$/Warning UDF Verifier reported errors see $seq.checkfs./g"
}
_check_test_fs()
@@ -900,7 +903,7 @@ _setup_xfs_testdir()
testdir=$TEST_DIR
}
_setup_udf_testdir()
_setup_udf_scratchdir()
{
[ "$FSTYP" != "udf" ] \
&& _fail "setup_udf_testdir: \$FSTYP is not udf"
@@ -926,10 +929,10 @@ _setup_udf_testdir()
testdir=$SCRATCH_MNT
}
_setup_nfs_testdir()
_setup_nfs_scratchdir()
{
[ "$FSTYP" != "nfs" ] \
&& _fail "setup_udf_testdir: \$FSTYP is not nfs"
&& _fail "setup_nfs_testdir: \$FSTYP is not nfs"
[ -z "$SCRATCH_DEV" ] \
&& _notrun "this test requires a valid host fs for \$SCRATCH_DEV"
[ -z "$SCRATCH_MNT" ] \
@@ -938,7 +941,7 @@ _setup_nfs_testdir()
# mounted?
if _mount | grep -q $SCRATCH_DEV
then
# if it's mounted, make sure its on $TEST_RW_DIR
# if it's mounted, make sure its on $SCRATCH_MNT
if ! _mount | grep $SCRATCH_DEV | grep -q $SCRATCH_MNT
then
_fail "\$SCRATCH_DEV is mounted but not on \$SCRATCH_MNT - aborting"
@@ -952,6 +955,11 @@ _setup_nfs_testdir()
testdir=$SCRATCH_MNT
}
#
# Warning for UDF and NFS this function calls _setup_udf_scratchdir and
# _setup_udf_scratchdir. This is done because testdir is a persistent
# XFS only partition.
#
_setup_testdir()
{
case $FSTYP in
@@ -959,10 +967,10 @@ _setup_testdir()
_setup_xfs_testdir
;;
udf)
_setup_udf_testdir
_setup_udf_scratchdir
;;
nfs*)
_setup_nfs_testdir
_setup_nfs_scratchdir
;;
*)
_fail "\$FSTYP is not xfs, udf or nfs"
@@ -1045,5 +1053,87 @@ _link_out_file()
fi
}
# Populate a filesystem with inodes for performance experiments
#
# usage: populate [-v] [-n ndirs] [-f nfiles] [-d depth] [-r root] [-s size]
#
_die()
{
echo $@
exit 1
}
_nfiles()
{
f=0
while [ $f -lt $1 ]
do
file=f$f
touch $file
if [ $size -gt 0 ]; then
dd if=/dev/zero of=$file bs=1024 count=$size
fi
f=`expr $f + 1`
done
}
# takes dirname, depth
_descend()
{
dirname=$1; depth=$2
mkdir $dirname || die "mkdir $dirname failed"
cd $dirname
_nfiles $files # files for this dir
[ $depth -eq 0 ] && return
deep=`expr $depth - 1` # go 1 down
[ $verbose = true ] && echo "descending, depth from leaves = $deep"
d=0
while [ $d -lt $dirs ]
do
_descend d$d $deep &
d=`expr $d + 1`
wait
done
}
_populate_fs()
{
here=`pwd`
dirs=5 # ndirs in each subdir till leaves
size=0 # sizeof files in K
files=100 # num files in _each_ subdir
depth=2 # depth of tree from root to leaves
verbose=false
root=root # path of initial root of directory tree
while getopts "d:f:n:r:s:v" c
do
case $c in
d) depth=$OPTARG;;
n) dirs=$OPTARG;;
f) files=$OPTARG;;
s) size=$OPTARG;;
v) verbose=true;;
r) root=$OPTARG;;
esac
done
_descend $root $depth
wait
cd $here
[ $verbose = true ] && echo done
}
# make sure this script returns success
/bin/true
+27 -18
View File
@@ -69,28 +69,31 @@ auto dxm@sgi.com
# ioctl - tests which use ioctl commands (directly/indirectly)
ioctl nathans@sgi.com
# udf filesystem
udf ajones@sgi.com
# test-group association ... one line per test
#
001 rw dir auto
002 metadata auto
001 rw dir udf auto
002 metadata udf auto
003 db auto
004 db auto
005 dir auto
006 dir auto
007 dir auto
005 dir udf auto
006 dir udf auto
007 dir udf auto
008 rw ioctl auto
009 rw ioctl auto
010 other auto
011 dir auto
010 other udf auto
011 dir udf auto
012 rw auto
013 other ioctl auto
014 rw auto
013 other ioctl udf auto
014 rw udf auto
015 other auto
016 rw auto
017 other auto
018 log logprint v2log auto
019 mkfs auto
020 metadata attr auto
020 metadata attr udf auto
021 db attr auto
022 dump ioctl auto
023 dump ioctl auto
@@ -121,7 +124,7 @@ ioctl nathans@sgi.com
048 other auto
049 rw auto
050 quota auto
051 acl auto
051 acl udf auto
052 quota db auto
053 acl repair auto
054 quota auto
@@ -132,21 +135,21 @@ ioctl nathans@sgi.com
059 dump ioctl
060 dump ioctl
061 dump ioctl auto
062 attr auto
062 attr udf auto
063 dump auto
064 dump
065 dump auto
066 dump ioctl auto
067 acl attr auto
068 other
069 rw auto
070 attr auto
069 rw udf auto
070 attr udf auto
071 rw auto
072 rw auto
073 copy auto
074 rw auto
075 rw auto
076 metadata rw
074 rw udf auto
075 rw udf auto
076 metadata rw udf
077 acl attr auto
078 growfs auto
079 acl attr ioctl metadata auto
@@ -163,7 +166,13 @@ ioctl nathans@sgi.com
090 rw
091 rw
092 other auto
093 attr cap auto
093 attr cap udf auto
094 metadata dir ioctl auto
095 log v2log auto
096 mkfs v2log auto
097 udf auto
098 udf auto
099 udf auto
100 udf auto
101 udf auto
102 udf auto