common/rc: generalize _get_filesize()
[xfstests-dev.git] / tests / generic / 275
index 2d726fadc2c5b7613368cdc654e81a160b2ff06f..adc8285677f17493af1c190b2e8d6f064ec4c014 100755 (executable)
@@ -1,33 +1,16 @@
 #! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2011-2012 Fujitsu, Inc.  All Rights Reserved.
+#
 # FS QA Test No. 275
 #
 # The posix write test.  When write size is larger than disk free size,
 # should write as much as possible until ENOSPC.
 #
-#-----------------------------------------------------------------------
-# Copyright (c) 2011-2012 Fujitsu, 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
-#
-#-----------------------------------------------------------------------
-#
 #creator
 
 seq=`basename $0`
 seqres=$RESULT_DIR/$seq
-seqres=$RESULT_DIR/$seq
-seqres=$RESULT_DIR/$seq
 echo "QA output created by $seq"
 
 here=`pwd`
@@ -41,12 +24,12 @@ _cleanup()
        _scratch_unmount
 }
 
-. ./common.rc
-. ./common.filter
+. ./common/rc
+. ./common/filter
 
 # real QA test starts here
 _supported_fs generic
-_supported_os IRIX Linux
+_supported_os Linux
 _require_scratch
 
 echo "------------------------------"
@@ -55,10 +38,12 @@ echo "------------------------------"
 
 rm -f $seqres.full
 
-umount $SCRATCH_DEV 2>/dev/null
+_scratch_unmount 2>/dev/null
 _scratch_mkfs_sized $((2 * 1024 * 1024 * 1024)) >>$seqres.full 2>&1
 _scratch_mount
 
+# this file will get removed to create 256k of free space after ENOSPC
+# conditions are created.
 dd if=/dev/zero of=$SCRATCH_MNT/tmp1 bs=256K count=1 >>$seqres.full 2>&1
 [ $? -ne 0 ] && _fail "Error creating file"
 
@@ -71,24 +56,26 @@ sync
 dd if=/dev/zero of=$SCRATCH_MNT/tmp4 bs=4K oflag=sync >>$seqres.full 2>&1
 # Save space usage info to the full file
 echo "Pre rm space:" >> $seqres.full
-df $SCRATCH_MNT >>$seqres.full 2>&1
+$DF_PROG $SCRATCH_MNT >>$seqres.full 2>&1
 
 # Should leave approx 256k free
 rm -f $SCRATCH_MNT/tmp1
 sync
 echo "Post rm space:" >> $seqres.full
-df $SCRATCH_MNT >>$seqres.full 2>&1
-_freespace=`df -k $SCRATCH_MNT | tail -n 1 | awk '{print $4}'`
+$DF_PROG $SCRATCH_MNT >>$seqres.full 2>&1
+_freespace=`$DF_PROG -k $SCRATCH_MNT | tail -n 1 | awk '{print $5}'`
 [ $_freespace -gt 1024 ] && _fail "could not sufficiently fill filesystem"
 
-# Try a write larger than available space
-dd if=/dev/zero of=$SCRATCH_MNT/tmp1 bs=1M count=1 >>$seqres.full 2>&1
+# Try to write more than available space in chunks that will allow at least one
+# full write to succeed.
+dd if=/dev/zero of=$SCRATCH_MNT/tmp1 bs=128k count=8 >>$seqres.full 2>&1
 echo "Bytes written until ENOSPC:" >>$seqres.full
 du $SCRATCH_MNT/tmp1 >>$seqres.full
 
 # And at least some of it should succeed.
-_filesize=`ls -l $SCRATCH_MNT/tmp1 | awk '{print $5}'`
-[ $_filesize -eq 0 ] && _fail "write file err: Partial write until enospc failed; wrote 0 bytes."
+_filesize=`_get_filesize $SCRATCH_MNT/tmp1`
+[ $_filesize -lt $((128 * 1024)) ] && \
+       _fail "Partial write until enospc failed; wrote $_filesize bytes."
 
 echo "done"
 status=0