On Wed, Aug 31, 2016 at 07:18:56PM +0800, Zorro Lang wrote: > This case is too old, at that time there's no "ftype" feature for > XFS. Due to this case need to clear features2 bits when mkfs.xfs, > so ftype bit stop case running for long time. > > New common function _require_old_xfs_format() will help to fix > this problem. Call it as: > > _require_old_xfs_format ATTR2 LAZYSBCOUNT > > Then it'll help to clear all features2 bits, besides ATTR2 and > LAZYSBCOUNT which will be tested in case. > > Signed-off-by: Zorro Lang <zlang@xxxxxxxxxx> Looks good to me overall, but the commit log and comments seem not so clear to me :) Some comments inline. > --- > > Hi, > > V2 add a new common function _require_old_xfs_format(), which help to > to make sure no features2 xfs bits will be set. > > But mostly we still want to test some features2 bits, so I make > this function won't deal with those features which are specified by > arguments. > > For clear CRC feature, we can set MKFS_OPTIONS="$MKFS_OPTIONS -m crc=0" > simply. But if the user specify crc=1/0 in local.config file, the test > can't continue running. So I check if it has been set in the function. I think this is because newer version of xfsprogs doesn't allow specifying an option multiple times. > > Please tell me if you have better way to implement this function:) > > By the way, did I miss some features2? > > Thanks, > Zorro > > common/rc | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > tests/xfs/187 | 36 ++++++++++------------------ > 2 files changed, 87 insertions(+), 24 deletions(-) > > diff --git a/common/rc b/common/rc > index 3fb0600..29e2987 100644 > --- a/common/rc > +++ b/common/rc > @@ -3923,6 +3923,81 @@ _require_xfs_mkfs_without_validation() > fi > } > > +# Make sure no features2 bits in XFS, besides those features are By "besides" I think you mean "except" :) > +# specified by arguments. All current features2 names as below: > +# "CRC FINOBT PROJID32BIT ATTR2 LAZYSBCOUNT FTYPE" > +_require_old_xfs_format() > +{ > + local skiplist="$*" > + local ftr2="" > + local b Seems not a good var name > + local opts "opts" is not used. > + > + _scratch_mkfs >/dev/null 2>&1 > + ftr2=`$XFS_DB_PROG -c version $SCRATCH_DEV | tr 'a-z' 'A-Z' |\ > + sed -n -e "s/,/ /g" -e "s/.*MOREBITS\(.*\)/\1/p"` > + > + for b in `echo $skiplist | tr 'a-z' 'A-Z'`; do > + i=`echo $ftr2 | sed -n -e "s/\(.*\)$b\(.*\)/\1\2/p"` > + if [ -n "$b" ]; then > + ftr2="$i" > + fi > + done > + > + for b in $ftr2; do > + case $b in > + CRC) > + if echo $MKFS_OPTIONS | grep -q "crc=1"; then > + MKFS_OPTIONS=`echo $MKFS_OPTIONS | \ > + sed -e "s/crc=1/crc=0/g"` > + else > + MKFS_OPTIONS="$MKFS_OPTIONS -m crc=0" > + fi > + ;; > + FINOBT) > + if echo $MKFS_OPTIONS | grep -q "finobt=1"; then > + MKFS_OPTIONS=`echo $MKFS_OPTIONS | \ > + sed -e "s/finobt=1/finobt=0/g"` > + else > + MKFS_OPTIONS="$MKFS_OPTIONS -m finobt=0" > + fi > + ;; > + PROJID32BIT) > + if echo $MKFS_OPTIONS | grep -q "projid32bit=1"; then > + MKFS_OPTIONS=`echo $MKFS_OPTIONS | \ > + sed -e "s/projid32bit=1/projid32bit=0/g"` > + else > + MKFS_OPTIONS="$MKFS_OPTIONS -i projid32bit=0" > + fi > + ;; > + ATTR2) > + if echo $MKFS_OPTIONS | grep -q "attr="; then > + MKFS_OPTIONS=`echo $MKFS_OPTIONS | \ > + sed -e "s/attr=[0-9]/attr=1/g"` > + else > + MKFS_OPTIONS="$MKFS_OPTIONS -i attr=1" > + fi > + ;; > + LAZYSBCOUNT) > + if echo $MKFS_OPTIONS | grep -q "lazy-count=1"; then > + MKFS_OPTIONS=`echo $MKFS_OPTIONS | \ > + sed -e "s/lazy-count=1/lazy-count=0/g"` > + else > + MKFS_OPTIONS="$MKFS_OPTIONS -l lazy-count=0" > + fi > + ;; > + FTYPE) > + if echo $MKFS_OPTIONS | grep -q "ftype=1"; then > + MKFS_OPTIONS=`echo $MKFS_OPTIONS | \ > + sed -e "s/ftype=1/ftype=0/g"` > + else > + MKFS_OPTIONS="$MKFS_OPTIONS -n ftype=0" > + fi > + ;; > + esac > + done > +} > + > init_rc > > ################################################################################ > diff --git a/tests/xfs/187 b/tests/xfs/187 > index 836b924..ffc851c 100755 > --- a/tests/xfs/187 > +++ b/tests/xfs/187 > @@ -31,7 +31,6 @@ 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 > @@ -57,25 +56,16 @@ _supported_fs xfs > _supported_os Linux > > _require_scratch > +# clear features2 bits which we won't test > +_require_old_xfs_format ATTR2 LAZYSBCOUNT Need more comments to state that ATTR2 and LAZYSBCOUNT are features we want to keep, otherwise this looks like only these two features are cleared. > _require_attrs > -_require_attr_v1 > -_require_projid16bit I'd keep above two requires to make sure mkfs supports such features. > > rm -f $seqres.full > - > -# Reset the options so that we can control what is going on here > -export MKFS_OPTIONS="" > -export MOUNT_OPTIONS="" > - > -# lazysb, attr2 and other feature bits are held in features2 and will require > -# morebitsbit on So test with lazysb and without it to see if the morebitsbit is > -# okay etc. If the mkfs defaults change, these need to change as well. > -export MKFS_NO_LAZY="-m crc=0 -l lazy-count=0 -i projid32bit=0" > -export MKFS_LAZY="-m crc=0 -l lazy-count=1 -i projid32bit=0" > +_scratch_mkfs >/dev/null 2>&1 What does this _scratch_mkfs do? Thanks, Eryu > > # Make sure that when we think we are testing with morebits off > # that we really are. > -_scratch_mkfs -i attr=1 $MKFS_NO_LAZY >/dev/null 2>&1 > +_scratch_mkfs -i attr=1 -l lazy-count=0 >/dev/null 2>&1 > $XFS_DB_PROG -c version $SCRATCH_DEV 2>&1 >$tmp.db > if grep -i morebits $tmp.db > then > @@ -90,13 +80,13 @@ echo "*** 1. test attr2 mkfs and then noattr2 mount ***" > echo "" > echo "attr2 fs" > echo "" > -_scratch_mkfs -i attr=2 $MKFS_NO_LAZY >/dev/null 2>&1 > +_scratch_mkfs -i attr=2 -l lazy-count=0 >/dev/null 2>&1 > $XFS_DB_PROG -r -c version $SCRATCH_DEV 2>&1 | _filter_version > echo "" > echo "noattr2 fs" > echo "" > _scratch_mount -o noattr2 > -$UMOUNT_PROG $SCRATCH_MNT > +_scratch_unmount > $XFS_DB_PROG -r -c version $SCRATCH_DEV 2>&1 | _filter_version > > # adding an EA will ensure the ATTR1 flag is turned on > @@ -105,7 +95,7 @@ echo "*** 2. test attr2 mkfs and then noattr2 mount with 1 EA ***" > echo "" > echo "attr2 fs" > echo "" > -_scratch_mkfs -i attr=2 $MKFS_NO_LAZY >/dev/null 2>&1 > +_scratch_mkfs -i attr=2 -l lazy-count=0 >/dev/null 2>&1 > $XFS_DB_PROG -r -c version $SCRATCH_DEV 2>&1 | _filter_version > echo "" > echo "noattr2 fs" > @@ -115,8 +105,8 @@ cd $SCRATCH_MNT > touch testfile > $SETFATTR_PROG -n user.test -v 0xbabe testfile > $GETFATTR_PROG testfile > -cd $here > -$UMOUNT_PROG $SCRATCH_MNT > +cd - >/dev/null > +_scratch_unmount > $XFS_DB_PROG -r -c version $SCRATCH_DEV 2>&1 | _filter_version > > echo "" > @@ -125,16 +115,14 @@ echo "" > echo "" > echo "attr2 fs" > echo "" > -_scratch_mkfs -i attr=2 $MKFS_LAZY >/dev/null 2>&1 > +_scratch_mkfs -i attr=2 -l lazy-count=1 >/dev/null 2>&1 > $XFS_DB_PROG -r -c version $SCRATCH_DEV 2>&1 | _filter_version > echo "" > echo "noattr2 fs" > echo "" > _scratch_mount -o noattr2 > -cd $SCRATCH_MNT > -touch testfile > -cd $here > -$UMOUNT_PROG $SCRATCH_MNT > +touch $SCRATCH_MNT/testfile > +_scratch_unmount > $XFS_DB_PROG -r -c version $SCRATCH_DEV 2>&1 | _filter_version > > # success, all done > -- > 2.7.4 > > -- > To unsubscribe from this list: send the line "unsubscribe fstests" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs