From f03e512ff690ca8218921c335ab64c774d3a50ff Mon Sep 17 00:00:00 2001 From: Eric Sandeen Date: Fri, 16 Apr 2010 13:20:54 -0500 Subject: [PATCH] xfststests 226: test for prealloc/delalloc/reserved space recapture 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 Reviewed-by: Alex Elder --- 226 | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 226.out | 6 +++++ group | 1 + 3 files changed, 81 insertions(+) create mode 100755 226 create mode 100644 226.out diff --git a/226 b/226 new file mode 100755 index 00000000..205343ea --- /dev/null +++ b/226 @@ -0,0 +1,74 @@ +#! /bin/sh +# FS QA Test No. 226 +# +# 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@sandeen.net + +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 + +_supported_fs generic +_supported_os Linux IRIX +_require_scratch + +# real QA test starts here +rm -f $seq.full + +umount $SCRATCH_DEV 2>/dev/null +echo "--> mkfs 256m filesystem" +_scratch_mkfs_sized `expr 256 \* 1024 \* 1024` >> $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/226.out b/226.out new file mode 100644 index 00000000..b5f60bfa --- /dev/null +++ b/226.out @@ -0,0 +1,6 @@ +QA output created by 226 +--> 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 8d4a83a6..7ec18a83 100644 --- a/group +++ b/group @@ -339,3 +339,4 @@ deprecated 223 auto quick 224 auto 225 auto quick +226 auto enospc -- 2.47.3