xfs
[Top] [All Lists]

[PATCH 3/3] [XFSQA] Test writing to ENOSPC

To: xfs@xxxxxxxxxxx
Subject: [PATCH 3/3] [XFSQA] Test writing to ENOSPC
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Sun, 15 Mar 2009 21:49:41 +1100
In-reply-to: <1237114181-18431-1-git-send-email-david@xxxxxxxxxxxxx>
References: <1237114181-18431-1-git-send-email-david@xxxxxxxxxxxxx>
Use larger files and different writing styles to fill
a 100MB filesystem to being full. In each case we should
get very close to the filesystem being full before getting
ENOSPC. THis tests different types of ENOSPC failures to
test 203 and requires more changes to pass.

Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
---
 015           |   11 ---------
 204           |   66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 204.out       |    4 +++
 common.filter |   11 +++++++++
 group         |    1 +
 5 files changed, 82 insertions(+), 11 deletions(-)
 mode change 100644 => 100755 141
 mode change 100644 => 100755 164
 mode change 100644 => 100755 165
 mode change 100644 => 100755 166
 mode change 100644 => 100755 167
 mode change 100644 => 100755 170
 mode change 100644 => 100755 171
 mode change 100644 => 100755 172
 mode change 100644 => 100755 173
 mode change 100644 => 100755 174
 mode change 100644 => 100755 179
 mode change 100644 => 100755 180
 mode change 100644 => 100755 182
 mode change 100644 => 100755 183
 mode change 100644 => 100755 184
 mode change 100644 => 100755 185
 mode change 100644 => 100755 188
 mode change 100644 => 100755 189
 mode change 100644 => 100755 194
 mode change 100644 => 100755 195
 mode change 100644 => 100755 196
 mode change 100644 => 100755 197
 mode change 100644 => 100755 199
 mode change 100644 => 100755 200
 create mode 100755 204
 create mode 100644 204.out

diff --git a/015 b/015
index 9b78837..f999732 100755
--- a/015
+++ b/015
@@ -33,17 +33,6 @@ _free()
     _df_dir $SCRATCH_MNT | $AWK_PROG '{ print $5 }'
 }
 
-_filter_dd()
-{
-    $AWK_PROG '
-        /records in/                { next }
-        /records out/               { next }
-        /No space left on device/   { print "   !!! disk full (expected)" 
-                                      next }
-                                    { print "   *** " $0 }
-    '
-}
-
 # real QA test starts here
 _supported_fs xfs
 _supported_os IRIX Linux
diff --git a/141 b/141
old mode 100644
new mode 100755
diff --git a/164 b/164
old mode 100644
new mode 100755
diff --git a/165 b/165
old mode 100644
new mode 100755
diff --git a/166 b/166
old mode 100644
new mode 100755
diff --git a/167 b/167
old mode 100644
new mode 100755
diff --git a/170 b/170
old mode 100644
new mode 100755
diff --git a/171 b/171
old mode 100644
new mode 100755
diff --git a/172 b/172
old mode 100644
new mode 100755
diff --git a/173 b/173
old mode 100644
new mode 100755
diff --git a/174 b/174
old mode 100644
new mode 100755
diff --git a/179 b/179
old mode 100644
new mode 100755
diff --git a/180 b/180
old mode 100644
new mode 100755
diff --git a/182 b/182
old mode 100644
new mode 100755
diff --git a/183 b/183
old mode 100644
new mode 100755
diff --git a/184 b/184
old mode 100644
new mode 100755
diff --git a/185 b/185
old mode 100644
new mode 100755
diff --git a/188 b/188
old mode 100644
new mode 100755
diff --git a/189 b/189
old mode 100644
new mode 100755
diff --git a/194 b/194
old mode 100644
new mode 100755
diff --git a/195 b/195
old mode 100644
new mode 100755
diff --git a/196 b/196
old mode 100644
new mode 100755
diff --git a/197 b/197
old mode 100644
new mode 100755
diff --git a/199 b/199
old mode 100644
new mode 100755
diff --git a/200 b/200
old mode 100644
new mode 100755
diff --git a/204 b/204
new file mode 100755
index 0000000..2a0b94e
--- /dev/null
+++ b/204
@@ -0,0 +1,66 @@
+#! /bin/sh
+# FS QA Test No. 203
+#
+# Test out ENOSPC flushiung on small filesystems.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 Dave Chinner
+#-----------------------------------------------------------------------
+#
+# creator
+owner=david@xxxxxxxxxxxxx
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs xfs
+_supported_os Linux
+
+_require_scratch
+
+_scratch_mkfs_xfs -d size=16m -b size=512 >/dev/null
+_scratch_mount
+
+# on a 16MB filesystem, there's 32768x512byte blocks. used is:
+#      - 4944 in the log,
+#      - 32+1 for the root inode cluster
+#      - 4 for the AG header
+#      - 2 for free space btrees
+#      - 4 for the AGFL
+#      - min(%5, 1024) = 1024 blocks for the reserve pool
+#      - about 15 blocks I can't account for right now.
+# That leaves ~26,745 blocks free to use.
+#
+# Writing the following three files fill the fs almost exactly.
+#
+# $ df -k /mnt/scratch
+# Filesystem           1K-blocks      Used Available Use% Mounted on
+# /dev/ubdc                13912     13908         4 100% /mnt/scratch
+#
+dd if=/dev/zero of=$SCRATCH_MNT/fred bs=512 count=25000 2>&1 | _filter_dd
+dd if=/dev/zero of=$SCRATCH_MNT/fred2 bs=512 count=500 2>&1 | _filter_dd
+dd if=/dev/zero of=$SCRATCH_MNT/fred3 bs=512 count=245 2>&1 | _filter_dd
+rm -f $SCRATCH_MNT/fred*
+
+echo "*** one file"
+# now try a single file of that size
+dd if=/dev/zero of=$SCRATCH_MNT/fred bs=512 count=26745 2>&1 | _filter_dd
+#rm -f $SCRATCH_MNT/fred*
+
+echo "*** one file, a few bytes at a time"
+# now try a single file of that size
+dd if=/dev/zero of=$SCRATCH_MNT/fred bs=15 count=$[26745/15*512] 2>&1 | 
_filter_dd
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/204.out b/204.out
new file mode 100644
index 0000000..0962619
--- /dev/null
+++ b/204.out
@@ -0,0 +1,4 @@
+QA output created by 204
+*** one file
+*** one file, a few bytes at a time
+*** done
diff --git a/common.filter b/common.filter
index d1d4cb5..0e2d7ff 100644
--- a/common.filter
+++ b/common.filter
@@ -167,5 +167,16 @@ _filter_growfs()
     }'
 }
 
+_filter_dd()
+{
+    $AWK_PROG '
+        /records in/                { next }
+        /records out/               { next }
+        /No space left on device/   { print "   !!! disk full (expected)" 
+                                      next }
+                                    { print "   *** " $0 }
+    '
+}
+
 # make sure this script returns success
 /bin/true
diff --git a/group b/group
index 0a51d9a..63c4dad 100644
--- a/group
+++ b/group
@@ -308,3 +308,4 @@ atime
 201 metadata auto quick
 202 repair auto quick
 203 metadata rw auto
+204 metadata rw auto
-- 
1.6.2

<Prev in Thread] Current Thread [Next in Thread>