From: Eryu Guan <eguan@redhat.com>
To: xfs@oss.sgi.com
Cc: Eryu Guan <eguan@redhat.com>
Subject: [PATCH 2/4] xfstests generic 309: test write to the last block of max file size on ext4
Date: Mon, 1 Apr 2013 18:57:42 +0800 [thread overview]
Message-ID: <1364813864-10820-3-git-send-email-eguan@redhat.com> (raw)
In-Reply-To: <1364813864-10820-1-git-send-email-eguan@redhat.com>
On unpatched ext4 if an extent exists which includes the block right
before the maximum file offset, and the block for the maximum file
offset is written, the kernel panics.
On patched ext4, the write would get EFBIG since we lower s_maxbytes
by one fs block.
Regression test for commit:
f17722f ext4: Fix max file size and logical block counting of extent format file
Though it's an ext4 specific issue, it's no harm to run on all file
systems, so put it in generic.
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
tests/generic/309 | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++
tests/generic/309.out | 2 ++
tests/generic/group | 1 +
3 files changed, 72 insertions(+)
create mode 100644 tests/generic/309
create mode 100644 tests/generic/309.out
diff --git a/tests/generic/309 b/tests/generic/309
new file mode 100644
index 0000000..875c09f
--- /dev/null
+++ b/tests/generic/309
@@ -0,0 +1,69 @@
+#! /bin/bash
+# FS QA Test No. 309
+#
+# Regression test for commit:
+# f17722f ext4: Fix max file size and logical block counting of extent format file
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2013 Red Hat, 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
+#-----------------------------------------------------------------------
+#
+
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+echo "QA output created by $seq"
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $testfile
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+testfile=$TEST_DIR/testfile.$seq
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+rm -f $seq.full
+echo "Silence is golden"
+
+block_size=`stat -f -c %s $TEST_DIR`
+
+# On unpatched ext4, if an extent exists which includes the block right
+# before the maximum file offset, and the block for the maximum file offset
+# is written, the kernel panics
+# On patched ext4, the write would get EFBIG since we lower s_maxbytes by
+# one fs block
+
+# Create a sparse file with an extent lays at one block before old s_maxbytes
+offset=$(((2**32 - 2) * $block_size))
+$XFS_IO_PROG -f -c "pwrite $offset $block_size" -c fsync $testfile >$seq.full 2>&1
+
+# Write to the block after the extent just created
+offset=$(((2**32 - 1) * $block_size))
+$XFS_IO_PROG -f -c "pwrite $offset $block_size" -c fsync $testfile >>$seq.full 2>&1
+
+# Got here without hitting BUG_ON(), test passed
+status=0
+exit
diff --git a/tests/generic/309.out b/tests/generic/309.out
new file mode 100644
index 0000000..56330d6
--- /dev/null
+++ b/tests/generic/309.out
@@ -0,0 +1,2 @@
+QA output created by 309
+Silence is golden
diff --git a/tests/generic/group b/tests/generic/group
index 6c74b63..9ff2ab1 100644
--- a/tests/generic/group
+++ b/tests/generic/group
@@ -110,3 +110,4 @@
300 auto aio enospc preallocrw stress
306 auto quick rw
308 auto quick
+309 auto quick
--
1.8.1.4
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2013-04-01 10:58 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-01 10:57 [PATCH 0/4] xfstests: random regression tests Eryu Guan
2013-04-01 10:57 ` Eryu Guan [this message]
2013-04-05 13:38 ` [PATCH 2/4] xfstests generic 309: test write to the last block of max file size on ext4 Rich Johnston
2013-04-01 10:57 ` [PATCH 3/4] xfstests ext4 310: test read /proc/fs/ext4/<dev>/mb_groups while the fs is being unmounted Eryu Guan
2013-04-05 13:38 ` Rich Johnston
2013-04-01 10:57 ` [PATCH 4/4] xfstests generic 311: test dir mtime and ctime are updated on rename Eryu Guan
2013-04-05 13:38 ` Rich Johnston
2013-04-05 13:41 ` [PATCH 0/4] xfstests: random regression tests Rich Johnston
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1364813864-10820-3-git-send-email-eguan@redhat.com \
--to=eguan@redhat.com \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox