linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] xfstests: make 275 pass on ext4
@ 2012-01-04 19:22 Eric Sandeen
  2012-01-04 19:37 ` Eric Sandeen
  2012-01-04 20:54 ` [PATCH V2] xfstests: make 275 pass Eric Sandeen
  0 siblings, 2 replies; 13+ messages in thread
From: Eric Sandeen @ 2012-01-04 19:22 UTC (permalink / raw)
  To: xfs-oss; +Cc: ext4 development, Eryu Guan

275 was failing on ext4 because it doesn't reliably write
until ENOSPC due to delalloc and crummy ENOSPC handling.
So the attempts to fill the fs would fail, and this test,
which was expecting to have exactly 4k free for the last write
attempt, failed as well, because it was able to write more than
the expected 4k.

Change a few things:

* Tidy up test description & comments
* Keep files on scratch mount for failure analysis
* Add a couple syncs here and there to push out delalloc
* Make a last-ditch effort to fill fs via direct IO
* Provide a little more detail on failure

With this change I can pass the test on ext4.

Fixing ext4's ENOSPC handling is probably another bug, but by
working really hard to fill an ext4 fs, this test can achieve
its specific goal.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---

diff --git a/275 b/275
index 214262e..3ebeabe 100755
--- a/275
+++ b/275
@@ -1,8 +1,8 @@
 #! /bin/bash
 # FS QA Test No. 275
 #
-# The posix write test. when write size is larger than disk free size,
-# should write as more as possible
+# 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.
@@ -36,7 +36,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 _cleanup()
 {
 	cd /
-	rm -f $SCRATCH_MNT/* $tmp.*
 	_scratch_unmount
 }
 
@@ -49,7 +48,7 @@ _supported_os IRIX Linux
 _require_scratch
 
 echo "------------------------------"
-echo "write lack test"
+echo "write until ENOSPC test"
 echo "------------------------------"
 
 rm -f $seq.full
@@ -69,10 +68,15 @@ then
 	exit
 fi
 
+# Attempt to completely fill fs
 dd if=/dev/zero of=tmp2 bs=1M >/dev/null 2>&1
+sync
 dd if=/dev/zero of=tmp3 bs=4K >/dev/null 2>&1
 sync
+# Last effort, use O_DIRECT to defeat delalloc
+dd if=/dev/zero of=tmp4 bs=4K oflag=direct >/dev/null 2>&1
 
+# Should leave exactly 4k free
 rm -f tmp1
 sync
 
@@ -80,7 +84,7 @@ dd if=/dev/zero of=tmp1 bs=8K count=1 >/dev/null 2>&1
 _filesize=`du tmp1 | awk '{print $1}'`
 if [ $_filesize -ne 4 ]
 then
-	echo "write file err"
+	echo "write file err: wrote $_filesize kbytes not 4 kbytes"
 	status=1
 	exit
 fi
diff --git a/275.out b/275.out
index 30af43c..69b9d52 100644
--- a/275.out
+++ b/275.out
@@ -1,5 +1,5 @@
 QA output created by 275
 ------------------------------
-write lack test
+write until ENOSPC test
 ------------------------------
 done


^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2012-09-08  0:09 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-04 19:22 [PATCH] xfstests: make 275 pass on ext4 Eric Sandeen
2012-01-04 19:37 ` Eric Sandeen
2012-01-04 20:54 ` [PATCH V2] xfstests: make 275 pass Eric Sandeen
2012-01-04 23:17   ` Dave Chinner
2012-01-04 23:21     ` Eric Sandeen
2012-01-05  0:39       ` Dave Chinner
2012-01-17 16:33         ` Eric Sandeen
2012-01-25 21:13     ` [PATCH V3] " Eric Sandeen
2012-09-07 19:56       ` Eric Sandeen
2012-09-08  0:09         ` Dave Chinner
2012-01-18  2:42   ` [PATCH V2] " Liu Bo
2012-01-18  4:03     ` Eric Sandeen
2012-01-18  4:42       ` Liu Bo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).