Eric Sandeen wrote: > Test writing and removing a file in a loop; filesize is 64m, > filesystem size is 256m. Loop 16 times each for buffered and > direct. > > ext4 hits enospc after a couple loops. > > Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxxx> > --- Dumb nit mentioned below, but otherwise looks good. Also note that you'll need to use a different test number now--like 221. Reviewed-by: Alex Elder <aelder@xxxxxxx> > (note this has the sized mkfs infra from the previous patch this week > since that patch needed more work w.r.t. modifying existing tests) > > diff --git a/common.rc b/common.rc > index 761170d..8d0cd4e 100644 > --- a/common.rc > +++ b/common.rc > @@ -237,6 +237,27 @@ _scratch_mkfs_options() > echo $SCRATCH_OPTIONS $MKFS_OPTIONS $* $SCRATCH_DEV > } > > +# arg 1 is size in bytes, arg 2 is (optional) blocksize > +_scratch_mkfs_sized() > +{ > + fssz=$1 > + bsz=$2 > + [ -z "$bsz" ] && bsz=4096 > + let blocks=$fssz/$bsz > + > + case $FSTYP in > + xfs) > + _scratch_mkfs_xfs -d size=$fssz -b size=$bsz 2>&1 >>$here/$seq.full > + ;; > + ext2|ext3|ext4) > + /sbin/mkfs -t $FSTYP -- $MKFS_OPTIONS -b $bsz $SCRATCH_DEV $blocks > 2>&1>>$here/$seq.full + ;; > + *) > + _notrun "Filesystem $FSTYP not supported in _scratch_mkfs_sized" > + ;; > + esac > +} > + > _scratch_mkfs_xfs() > { > # extra mkfs options can be added by tests > > diff --git a/220 b/220 > new file mode 100755 > index 0000000..55982b7 > --- /dev/null > +++ b/220 > @@ -0,0 +1,76 @@ > +#! /bin/sh > +# FS QA Test No. 220 > +# > +# Test for prealloc space leaks by rewriting the same file in a loop > +# > +#----------------------------------------------------------------------- > +# Copyright (c) 2009 Eric Sandeen. 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 > +# > +#----------------------------------------------------------------------- > +# > +# creator > +owner=sandeen@xxxxxxxxxxx > + > +seq=`basename $0` > +echo "QA output created by $seq" > + > +here=`pwd` > +tmp=/tmp/$$ > +status=1 # failure is the default! > +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 > + > +# get standard environment, filters and checks > +. ./common.rc > + > +# real QA test starts here > +_supported_fs generic > +_supported_os Linux IRIX > +_require_scratch > + > +# real QA test starts here So which is it, here or above that the "real QA test starts"? > +rm -f $seq.full > + > +umount $SCRATCH_DEV 2>/dev/null > +let fssize=256*1024*1024 > +echo "--> mkfs 256m filesystem" > +_scratch_mkfs_sized $fssize >> $seq.full 2>&1 > +_scratch_mount > + > +loops=16 > + > +echo "--> $loops buffered 64m writes in a loop" > +for I in `seq 1 $loops`; do > + echo -n "$I " > + xfs_io -F -f -c 'pwrite 0 64m' $SCRATCH_MNT/test >> $seq.full > + rm -f $SCRATCH_MNT/test > +done > + > +echo > +umount $SCRATCH_DEV > +_scratch_mount > + > +echo "--> $loops direct 64m writes in a loop" > +for I in `seq 1 $loops`; do > + echo -n "$I " > + xfs_io -F -f -d -c 'pwrite 0 64m' $SCRATCH_MNT/test >> $seq.full > + rm -f $SCRATCH_MNT/test > +done > + > +echo > +umount $SCRATCH_DEV > + > +status=0 > +exit > diff --git a/220.out b/220.out > new file mode 100644 > index 0000000..497a585 > --- /dev/null > +++ b/220.out > @@ -0,0 +1,6 @@ > +QA output created by 220 > +--> mkfs 256m filesystem > +--> 16 buffered 64m writes in a loop > +1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 > +--> 16 direct 64m writes in a loop > +1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 > diff --git a/group b/group > index 7cea01d..9b8a401 100644 > --- a/group > +++ b/group > @@ -329,3 +329,4 @@ prealloc > 217 log metadata auto > 218 auto fsr quick > 219 auto quota quick > +220 enospc auto quick > > _______________________________________________ > xfs mailing list > xfs@xxxxxxxxxxx > http://oss.sgi.com/mailman/listinfo/xfs -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html