From: Chandan Rajendra <chandan@linux.vnet.ibm.com>
To: fstests@vger.kernel.org
Cc: Chandan Rajendra <chandan@linux.vnet.ibm.com>,
guaneryu@gmail.com, darrick.wong@oracle.com, zlang@redhat.com,
linux-xfs@vger.kernel.org
Subject: [PATCH V5 01/20] Fix xfs/009 to work with 64k block size
Date: Mon, 24 Sep 2018 20:49:23 +0530 [thread overview]
Message-ID: <20180924151942.8220-2-chandan@linux.vnet.ibm.com> (raw)
In-Reply-To: <20180924151942.8220-1-chandan@linux.vnet.ibm.com>
xfs_alloc_file_space() rounds up allocation requests by the filesystem
block size. Hence this commit changes the test to work with block size
units rather than with a multiple of 4096 bytes.
Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
---
tests/xfs/009 | 92 ++++++++++++++++++++++++++++++++++++++++++++++---------
tests/xfs/009.out | 66 +++++++++++++++++++--------------------
2 files changed, 110 insertions(+), 48 deletions(-)
diff --git a/tests/xfs/009 b/tests/xfs/009
index 68f6379..7f95156 100755
--- a/tests/xfs/009
+++ b/tests/xfs/009
@@ -14,9 +14,6 @@ here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
-# This isn't really related to fs block size, it's just what
-# alloc uses for the "block" unit in it's input parameters...
-bsize=4096
_cleanup()
{
@@ -24,13 +21,6 @@ _cleanup()
_scratch_unmount
}
-_block_filter()
-{
- sed \
- -e 's/[0-9][0-9]*\.\.[0-9][0-9]*/BLOCKRANGE/g' \
- -e "s/blocksize $bsize/blocksize BSIZE/g"
-}
-
_init()
{
echo "*** mkfs"
@@ -49,11 +39,6 @@ _init()
fi
}
-_filesize()
-{
- ls -l $1 | $AWK_PROG '{print "filesize = " $5}'
-}
-
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
@@ -64,9 +49,86 @@ _supported_os Linux
_require_scratch
+_filesize()
+{
+ ls -l $1 | $AWK_PROG -v bsize="$bsize" '{print "filesize = " $5 / bsize}'
+}
+
+_block_filter()
+{
+ $AWK_PROG -v bsize="$bsize" '
+ /blocksize/ {
+ printf(" blocksize BSIZE\n")
+
+ next
+ }
+
+ /CMD/ {
+ split($3, off, "=")
+ offset = strtonum(off[2])
+ if (offset != -1)
+ offset = offset / bsize
+
+ split($4, len, "=")
+ nr_blocks = strtonum(len[2])
+ if (nr_blocks != -1)
+ nr_blocks = nr_blocks / bsize
+
+ printf(" %s %s off=%s, len=%d\n", $1, $2, offset, nr_blocks)
+
+ next
+ }
+
+ /MAP/ {
+ split($2, off, "=")
+ offset = strtonum(off[2])
+ if (offset != -1)
+ offset = offset / bsize
+
+ split($3, len, "=")
+
+ nr_blocks = strtonum(len[2])
+
+ if (nr_blocks != -1)
+ nr_blocks = nr_blocks / bsize
+
+ printf(" %s off=%s, len=%d %s\n", $1, offset, nr_blocks, $4)
+
+ next
+ }
+
+ /TRUNCATE/ {
+ split($2, off, "=")
+ offset = strtonum(off[2]) / bsize
+
+ printf(" %s off=%s\n", $1, offset)
+
+ next
+ }
+
+ /\[[0-9]+,[0-9]+\]:/ {
+ printf(" %s BLOCKRANGE\n", $1)
+
+ next
+ }
+
+ {
+ print
+
+ next
+ }
+ '
+}
+
_init
out=$SCRATCH_MNT/$$.tmp
+# This isn't really related to fs block size, it's just what
+# alloc uses for the "block" unit in it's input parameters...
+# However, xfs_alloc_file_space() rounds up allocation
+# request by the filesystem's block size.
+bsize=$(_get_file_block_size $SCRATCH_MNT)
+
# since we're using a clean FS here, we make some assumptions
# about availability of contiguous blocks
diff --git a/tests/xfs/009.out b/tests/xfs/009.out
index 7132aca..02b5d82 100644
--- a/tests/xfs/009.out
+++ b/tests/xfs/009.out
@@ -3,8 +3,8 @@ QA output created by 009
*** mount
*** test 1 - reservations cleared on O_TRUNC
blocksize BSIZE
- CMD resvsp, off=0, len=4096000
- MAP off=0, len=4096000 [0,1000]
+ CMD resvsp, off=0, len=1000
+ MAP off=0, len=1000 [0,1000]
[ofs,count]: start..end
[0,1000]: BLOCKRANGE
MAP off=0, len=-1 [0-]
@@ -17,53 +17,53 @@ filesize = 0
filesize = 0
*** test 2 - reserve & filesize
blocksize BSIZE
- CMD resvsp, off=0, len=4096000
- MAP off=0, len=4096000 [0,1000]
+ CMD resvsp, off=0, len=1000
+ MAP off=0, len=1000 [0,1000]
[ofs,count]: start..end
[0,1000]: BLOCKRANGE
filesize = 0
*** test 3 - alloc & filesize
blocksize BSIZE
- CMD allocsp, off=4096000, len=-1
- MAP off=4096000, len=-1 [1000-]
+ CMD allocsp, off=1000, len=-1
+ MAP off=1000, len=-1 [1000-]
[ofs,count]: start..end
-filesize = 4096000
+filesize = 1000
*** test 4 - allocations cleared on O_TRUNC
blocksize BSIZE
- CMD allocsp, off=4096000, len=-1
- MAP off=4096000, len=-1 [1000-]
+ CMD allocsp, off=1000, len=-1
+ MAP off=1000, len=-1 [1000-]
[ofs,count]: start..end
-filesize = 4096000
+filesize = 1000
blocksize BSIZE
MAP off=0, len=-1 [0-]
[ofs,count]: start..end
filesize = 0
*** test 5 - reserve / unreserve
blocksize BSIZE
- CMD resvsp, off=0, len=409600
- MAP off=0, len=409600 [0,100]
+ CMD resvsp, off=0, len=100
+ MAP off=0, len=100 [0,100]
[ofs,count]: start..end
[0,100]: BLOCKRANGE
- CMD unresvsp, off=409600, len=2048000
- MAP off=409600, len=2048000 [100,500]
+ CMD unresvsp, off=100, len=500
+ MAP off=100, len=500 [100,500]
[ofs,count]: start..end
MAP off=0, len=-1 [0-]
[ofs,count]: start..end
[0,100]: BLOCKRANGE
- CMD unresvsp, off=3686400, len=819200
- MAP off=3686400, len=819200 [900,200]
+ CMD unresvsp, off=900, len=200
+ MAP off=900, len=200 [900,200]
[ofs,count]: start..end
MAP off=0, len=-1 [0-]
[ofs,count]: start..end
[0,100]: BLOCKRANGE
*** test 6 - reserve adjacent
blocksize BSIZE
- CMD resvsp, off=0, len=409600
- MAP off=0, len=409600 [0,100]
+ CMD resvsp, off=0, len=100
+ MAP off=0, len=100 [0,100]
[ofs,count]: start..end
[0,100]: BLOCKRANGE
- CMD resvsp, off=409600, len=409600
- MAP off=409600, len=409600 [100,100]
+ CMD resvsp, off=100, len=100
+ MAP off=100, len=100 [100,100]
[ofs,count]: start..end
[100,100]: BLOCKRANGE
MAP off=0, len=-1 [0-]
@@ -71,44 +71,44 @@ filesize = 0
[0,200]: BLOCKRANGE
*** test 7 - alloc
blocksize BSIZE
- CMD allocsp, off=4096000, len=-1
- MAP off=4096000, len=-1 [1000-]
+ CMD allocsp, off=1000, len=-1
+ MAP off=1000, len=-1 [1000-]
[ofs,count]: start..end
MAP off=0, len=-1 [0-]
[ofs,count]: start..end
[0,1000]: BLOCKRANGE
- CMD allocsp, off=8192000, len=-1
- MAP off=8192000, len=-1 [2000-]
+ CMD allocsp, off=2000, len=-1
+ MAP off=2000, len=-1 [2000-]
[ofs,count]: start..end
MAP off=0, len=-1 [0-]
[ofs,count]: start..end
[0,2000]: BLOCKRANGE
-filesize = 8192000
+filesize = 2000
*** test 8 - alloc & truncate
blocksize BSIZE
- CMD allocsp, off=4096000, len=-1
- MAP off=4096000, len=-1 [1000-]
+ CMD allocsp, off=1000, len=-1
+ MAP off=1000, len=-1 [1000-]
[ofs,count]: start..end
MAP off=0, len=-1 [0-]
[ofs,count]: start..end
[0,1000]: BLOCKRANGE
- TRUNCATE off=2048000
+ TRUNCATE off=500
MAP off=0, len=-1 [0-]
[ofs,count]: start..end
[0,500]: BLOCKRANGE
-filesize = 2048000
+filesize = 500
*** test 9 - reserve & truncate
blocksize BSIZE
- CMD resvsp, off=0, len=4096000
- MAP off=0, len=4096000 [0,1000]
+ CMD resvsp, off=0, len=1000
+ MAP off=0, len=1000 [0,1000]
[ofs,count]: start..end
[0,1000]: BLOCKRANGE
MAP off=0, len=-1 [0-]
[ofs,count]: start..end
[0,1000]: BLOCKRANGE
- TRUNCATE off=2048000
+ TRUNCATE off=500
MAP off=0, len=-1 [0-]
[ofs,count]: start..end
[0,1000]: BLOCKRANGE
-filesize = 2048000
+filesize = 500
*** unmount
--
2.9.5
next prev parent reply other threads:[~2018-09-24 21:20 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-24 15:19 [PATCH V5 00/20] Fix tests to work on non-4k block sized fs instances Chandan Rajendra
2018-09-24 15:19 ` Chandan Rajendra [this message]
2018-09-24 15:19 ` [PATCH V5 02/20] xfs/050: Fix "Push past soft inode limit" case Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 03/20] Fix xfs/050 to work with 64k block size Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 04/20] Fix xfs/074 " Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 05/20] Fix xfs/127 " Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 06/20] Fix xfs/139 " Chandan Rajendra
2018-10-06 0:33 ` Dave Chinner
2018-10-06 6:51 ` Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 07/20] Fix xfs/140 " Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 08/20] Fix xfs/190 " Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 09/20] xfs/299: Fix "Push past soft inode limit" case Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 10/20] Fix xfs/299 to work with 64k block size Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 11/20] xfs/325: Inject free_extent error after CoW operation Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 12/20] Fix generic/102 to work with 64k block size Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 13/20] Fix generic/172 " Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 14/20] Filter fiemap output by FS " Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 15/20] Fix generic/177 to work with 64k " Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 16/20] Fix generic/230 " Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 17/20] Fix generic/235 " Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 18/20] Fix generic/459 " Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 19/20] Fix generic/018 " Chandan Rajendra
2018-09-24 15:19 ` [PATCH V5 20/20] Fix generic/108 " Chandan Rajendra
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=20180924151942.8220-2-chandan@linux.vnet.ibm.com \
--to=chandan@linux.vnet.ibm.com \
--cc=darrick.wong@oracle.com \
--cc=fstests@vger.kernel.org \
--cc=guaneryu@gmail.com \
--cc=linux-xfs@vger.kernel.org \
--cc=zlang@redhat.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;
as well as URLs for NNTP newsgroup(s).