All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V2 0/5] Fix Btrfs tests to work on non-4k block sized fs instances
@ 2015-11-30 10:16 Chandan Rajendra
  2015-11-30 10:16 ` [PATCH V2 1/5] Filter xfs_io and od's output in units of FS block size Chandan Rajendra
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Chandan Rajendra @ 2015-11-30 10:16 UTC (permalink / raw)
  To: fstests; +Cc: Chandan Rajendra, linux-btrfs, fdmanana, chandan

This patchset fixes Btrfs tests to work on variable block size. This
is based off the RFC patch sent during March of this year
(https://www.marc.info/?l=linux-btrfs&m=142736088310300&w=2).

Currently, some of the tests are written with the assumption that 4k
is the block size of the filesystem instance. On architectures
(e.g. ppc64) with a larger page size (and hence larger block size),
these tests fail because the block bondaries assumed by the the tests
are no longer true.

To fix the issue, This patchset adds two new filter functions:
1. _filter_xfs_io_blocks_modified
2. _filter_od

Changes from V1:
1. Remove faulty patches which incorrectly compared a file's md5sum
   output before and after performing file operations instead of
   echoing it to stdout.

Chandan Rajendra (5):
  Filter xfs_io and od's output in units of FS block size
  Fix btrfs/017 to work on non-4k block sized filesystems
  Fix btrfs/055 to work on non-4k block sized filesystems
  Fix btrfs/056 to work on non-4k block sized filesystems
  Fix btrfs/096 to work on non-4k block sized filesystems

 common/filter       |  45 +++++++
 tests/btrfs/017     |  16 ++-
 tests/btrfs/017.out |   3 +-
 tests/btrfs/055     | 128 ++++++++++--------
 tests/btrfs/055.out | 378 +++++++++++++++++++++++++---------------------------
 tests/btrfs/056     |  51 ++++---
 tests/btrfs/056.out | 152 +++++++++------------
 tests/btrfs/096     |  45 ++++---
 tests/btrfs/096.out |  15 +--
 9 files changed, 437 insertions(+), 396 deletions(-)

-- 
2.1.0


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

* [PATCH V2 1/5] Filter xfs_io and od's output in units of FS block size
  2015-11-30 10:16 [PATCH V2 0/5] Fix Btrfs tests to work on non-4k block sized fs instances Chandan Rajendra
@ 2015-11-30 10:16 ` Chandan Rajendra
  2015-12-10 17:24   ` Filipe Manana
  2015-11-30 10:16 ` [PATCH V2 2/5] Fix btrfs/017 to work on non-4k block sized filesystems Chandan Rajendra
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Chandan Rajendra @ 2015-11-30 10:16 UTC (permalink / raw)
  To: fstests; +Cc: Chandan Rajendra, linux-btrfs, fdmanana, chandan

The helpers introduced in this commit will be used to make btrfs tests that
assume 4k as the block size to work on non-4k blocksized filesystem instances
as well.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
---
 common/filter | 45 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/common/filter b/common/filter
index af456c9..05f2fab 100644
--- a/common/filter
+++ b/common/filter
@@ -229,6 +229,38 @@ _filter_xfs_io_unique()
     common_line_filter | _filter_xfs_io
 }
 
+_filter_xfs_io_units_modified()
+{
+	UNIT=$1
+	UNIT_SIZE=$2
+
+	$AWK_PROG -v unit="$UNIT" -v unit_size=$UNIT_SIZE '
+		/wrote/ {
+			split($2, bytes, "/")
+
+			bytes_written = strtonum(bytes[1])
+
+			offset = strtonum($NF)
+
+			unit_start = offset / unit_size
+			unit_start = int(unit_start)
+			unit_end = (offset + bytes_written - 1) / unit_size
+			unit_end = int(unit_end)
+
+			printf("%ss modified: [%d - %d]\n", unit, unit_start, unit_end)
+
+			next
+		}
+	'
+}
+
+_filter_xfs_io_blocks_modified()
+{
+	BLOCK_SIZE=$(get_block_size $SCRATCH_MNT)
+
+	_filter_xfs_io_units_modified "Block" $BLOCK_SIZE
+}
+
 _filter_test_dir()
 {
 	sed -e "s,$TEST_DEV,TEST_DEV,g" -e "s,$TEST_DIR,TEST_DIR,g"
@@ -323,5 +355,18 @@ _filter_ro_mount() {
 	    -e "s/mount: cannot mount block device/mount: cannot mount/g"
 }
 
+_filter_od()
+{
+	BLOCK_SIZE=$(get_block_size $SCRATCH_MNT)
+	$AWK_PROG -v block_size=$BLOCK_SIZE '
+		/^[0-9]+/ {
+			offset = strtonum("0"$1);
+			$1 = sprintf("%o", offset / block_size);
+			print $0;
+		}
+		/\*/
+	'
+}
+
 # make sure this script returns success
 /bin/true
-- 
2.1.0


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

* [PATCH V2 2/5] Fix btrfs/017 to work on non-4k block sized filesystems
  2015-11-30 10:16 [PATCH V2 0/5] Fix Btrfs tests to work on non-4k block sized fs instances Chandan Rajendra
  2015-11-30 10:16 ` [PATCH V2 1/5] Filter xfs_io and od's output in units of FS block size Chandan Rajendra
@ 2015-11-30 10:16 ` Chandan Rajendra
  2015-12-10 17:25   ` Filipe Manana
  2015-11-30 10:16 ` [PATCH V2 3/5] Fix btrfs/055 " Chandan Rajendra
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Chandan Rajendra @ 2015-11-30 10:16 UTC (permalink / raw)
  To: fstests; +Cc: Chandan Rajendra, linux-btrfs, fdmanana, chandan

This commit makes use of the new _filter_xfs_io_blocks_modified filtering
function to print information in terms of file blocks rather than file
offset.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
---
 tests/btrfs/017     | 16 ++++++++++++----
 tests/btrfs/017.out |  3 +--
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/tests/btrfs/017 b/tests/btrfs/017
index f8855e3..34c5f0a 100755
--- a/tests/btrfs/017
+++ b/tests/btrfs/017
@@ -63,13 +63,21 @@ rm -f $seqres.full
 _scratch_mkfs "--nodesize 65536" >>$seqres.full 2>&1
 _scratch_mount
 
-$XFS_IO_PROG -f -d -c "pwrite 0 8K" $SCRATCH_MNT/foo | _filter_xfs_io
+BLOCK_SIZE=$(get_block_size $SCRATCH_MNT)
+EXTENT_SIZE=$((2 * $BLOCK_SIZE))
+
+$XFS_IO_PROG -f -d -c "pwrite 0 $EXTENT_SIZE" $SCRATCH_MNT/foo \
+	| _filter_xfs_io_blocks_modified
 
 _run_btrfs_util_prog subvolume snapshot $SCRATCH_MNT $SCRATCH_MNT/snap
 
-$CLONER_PROG -s 0 -d 0 -l 8192 $SCRATCH_MNT/foo $SCRATCH_MNT/foo-reflink
-$CLONER_PROG -s 0 -d 0 -l 8192 $SCRATCH_MNT/foo $SCRATCH_MNT/snap/foo-reflink
-$CLONER_PROG -s 0 -d 0 -l 8192 $SCRATCH_MNT/foo $SCRATCH_MNT/snap/foo-reflink2
+$CLONER_PROG -s 0 -d 0 -l $EXTENT_SIZE $SCRATCH_MNT/foo $SCRATCH_MNT/foo-reflink
+
+$CLONER_PROG -s 0 -d 0 -l $EXTENT_SIZE $SCRATCH_MNT/foo \
+	     $SCRATCH_MNT/snap/foo-reflink
+
+$CLONER_PROG -s 0 -d 0 -l $EXTENT_SIZE $SCRATCH_MNT/foo \
+	     $SCRATCH_MNT/snap/foo-reflink2
 
 _run_btrfs_util_prog quota enable $SCRATCH_MNT
 _run_btrfs_util_prog quota rescan -w $SCRATCH_MNT
diff --git a/tests/btrfs/017.out b/tests/btrfs/017.out
index f940f3a..503eb88 100644
--- a/tests/btrfs/017.out
+++ b/tests/btrfs/017.out
@@ -1,5 +1,4 @@
 QA output created by 017
-wrote 8192/8192 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+Blocks modified: [0 - 1]
 65536 65536
 65536 65536
-- 
2.1.0


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

* [PATCH V2 3/5] Fix btrfs/055 to work on non-4k block sized filesystems
  2015-11-30 10:16 [PATCH V2 0/5] Fix Btrfs tests to work on non-4k block sized fs instances Chandan Rajendra
  2015-11-30 10:16 ` [PATCH V2 1/5] Filter xfs_io and od's output in units of FS block size Chandan Rajendra
  2015-11-30 10:16 ` [PATCH V2 2/5] Fix btrfs/017 to work on non-4k block sized filesystems Chandan Rajendra
@ 2015-11-30 10:16 ` Chandan Rajendra
  2015-12-10 17:25   ` Filipe Manana
  2015-11-30 10:16 ` [PATCH V2 4/5] Fix btrfs/056 " Chandan Rajendra
  2015-11-30 10:17 ` [PATCH V2 5/5] Fix btrfs/096 " Chandan Rajendra
  4 siblings, 1 reply; 11+ messages in thread
From: Chandan Rajendra @ 2015-11-30 10:16 UTC (permalink / raw)
  To: fstests; +Cc: Chandan Rajendra, linux-btrfs, fdmanana, chandan

This commit makes use of the new _filter_xfs_io_blocks_modified and _filter_od
filtering functions to print information in terms of file blocks rather than
file offset.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
---
 tests/btrfs/055     | 128 ++++++++++--------
 tests/btrfs/055.out | 378 +++++++++++++++++++++++++---------------------------
 2 files changed, 259 insertions(+), 247 deletions(-)

diff --git a/tests/btrfs/055 b/tests/btrfs/055
index c0dd9ed..1f50850 100755
--- a/tests/btrfs/055
+++ b/tests/btrfs/055
@@ -60,88 +60,110 @@ test_btrfs_clone_with_holes()
 	_scratch_mkfs "$1" >/dev/null 2>&1
 	_scratch_mount
 
-	# Create a file with 4 extents and 1 hole, all with a size of 8Kb each.
-	# The hole is in the range [16384, 24576[.
-	$XFS_IO_PROG -s -f -c "pwrite -S 0x01 -b 8192 0 8192" \
-			-c "pwrite -S 0x02 -b 8192 8192 8192" \
-			-c "pwrite -S 0x04 -b 8192 24576 8192" \
-			-c "pwrite -S 0x05 -b 8192 32768 8192" \
-		$SCRATCH_MNT/foo | _filter_xfs_io
+	BLOCK_SIZE=$(get_block_size $SCRATCH_MNT)
 
-	# Clone destination file, 1 extent of 96kb.
-	$XFS_IO_PROG -s -f -c "pwrite -S 0xff -b 98304 0 98304" \
-		$SCRATCH_MNT/bar | _filter_xfs_io
+	EXTENT_SIZE=$((2 * $BLOCK_SIZE))
 
-	# Clone 2nd extent, 8Kb hole and 3rd extent of foo into bar.
-	$CLONER_PROG -s 8192 -d 0 -l 24576 $SCRATCH_MNT/foo $SCRATCH_MNT/bar
+	OFFSET=0
+
+	# Create a file with 4 extents and 1 hole, all with 2 blocks each.
+	# The hole is in the block range [4, 5[.
+	$XFS_IO_PROG -s -f -c "pwrite -S 0x01 -b $EXTENT_SIZE $OFFSET $EXTENT_SIZE" \
+		     $SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
+
+	OFFSET=$(($OFFSET + $EXTENT_SIZE))
+	$XFS_IO_PROG -s -f -c "pwrite -S 0x02 -b $EXTENT_SIZE $OFFSET $EXTENT_SIZE" \
+		     $SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
+
+	OFFSET=$(($OFFSET + 2 * $EXTENT_SIZE))
+	$XFS_IO_PROG -s -f -c "pwrite -S 0x04 -b $EXTENT_SIZE $OFFSET $EXTENT_SIZE" \
+		     $SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
+
+	OFFSET=$(($OFFSET + $EXTENT_SIZE))
+	$XFS_IO_PROG -s -f -c "pwrite -S 0x05 -b $EXTENT_SIZE $OFFSET $EXTENT_SIZE" \
+		     $SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
+
+	# Clone destination file, 1 extent of 24 blocks.
+	EXTENT_SIZE=$((24 * $BLOCK_SIZE))
+	$XFS_IO_PROG -s -f -c "pwrite -S 0xff -b $EXTENT_SIZE 0 $EXTENT_SIZE" \
+		$SCRATCH_MNT/bar | _filter_xfs_io_blocks_modified
+
+	# Clone 2nd extent, 2-blocks sized hole and 3rd extent of foo into bar.
+	$CLONER_PROG -s $((2 * $BLOCK_SIZE)) -d 0 -l $((6 * $BLOCK_SIZE)) \
+		     $SCRATCH_MNT/foo $SCRATCH_MNT/bar
 
 	# Verify both extents and the hole were cloned.
 	echo "1) Check both extents and the hole were cloned"
-	od -t x1 $SCRATCH_MNT/bar
+	od -t x1 $SCRATCH_MNT/bar | _filter_od
 
-	# Cloning range starts at the middle of an hole.
-	$CLONER_PROG -s 20480 -d 32768 -l 12288 $SCRATCH_MNT/foo \
-		$SCRATCH_MNT/bar
+	# Cloning range starts at the middle of a hole.
+	$CLONER_PROG -s $((5 * $BLOCK_SIZE)) -d $((8 * $BLOCK_SIZE)) \
+		     -l $((3 * $BLOCK_SIZE)) $SCRATCH_MNT/foo $SCRATCH_MNT/bar
 
-	# Verify that half of the hole and the following 8Kb extent were cloned.
-	echo "2) Check half hole and one 8Kb extent were cloned"
-	od -t x1 $SCRATCH_MNT/bar
+	# Verify that half of the hole and the following 2 block extent were cloned.
+	echo "2) Check half hole and the following 2 block extent were cloned"
+	od -t x1 $SCRATCH_MNT/bar | _filter_od
 
-	# Cloning range ends at the middle of an hole.
-	$CLONER_PROG -s 0 -d 65536 -l 20480 $SCRATCH_MNT/foo $SCRATCH_MNT/bar
+	# Cloning range ends at the middle of a hole.
+	$CLONER_PROG -s 0 -d $((16 * $BLOCK_SIZE)) -l $((5 * $BLOCK_SIZE)) \
+		     $SCRATCH_MNT/foo $SCRATCH_MNT/bar
 
-	# Verify that 2 extents of 8kb and a 4kb hole were cloned.
-	echo "3) Check that 2 extents of 8kb eacg and a 4kb hole were cloned"
-	od -t x1 $SCRATCH_MNT/bar
+	# Verify that 2 extents of 2 blocks size and a 1-block hole were cloned.
+	echo "3) Check that 2 extents of 2 blocks each and a hole of 1 block were cloned"
+	od -t x1 $SCRATCH_MNT/bar | _filter_od
 
-	# Create a 24Kb hole at the end of the source file (foo).
-	$XFS_IO_PROG -c "truncate 65536" $SCRATCH_MNT/foo
+	# Create a 6-block hole at the end of the source file (foo).
+	$XFS_IO_PROG -c "truncate $((16 * $BLOCK_SIZE))" $SCRATCH_MNT/foo \
+		| _filter_xfs_io_blocks_modified
 	sync
 
 	# Now clone a range that overlaps that hole at the end of the foo file.
-	# It should clone the last 4Kb of the extent at offset 32768 and the
-	# first 8kb of the 24kb hole at the end of foo.
-	$CLONER_PROG -s 36864 -d 86016 -l 12288 $SCRATCH_MNT/foo \
-		$SCRATCH_MNT/bar
+	# It should clone the 10th block and the first two blocks of the hole
+	# at the end of foo.
+	$CLONER_PROG -s $((9 * $BLOCK_SIZE)) -d $((21 * $BLOCK_SIZE)) \
+		     -l $((3 * $BLOCK_SIZE)) $SCRATCH_MNT/foo $SCRATCH_MNT/bar
 
-	# Verify that the second half of the 8Kb extent at offset 32768 of foo
-	# and the first 8Kb of the 24kb hole of foo were cloned into bar.
-	echo "4) Check that 4kb of 1 extent and 8Kb of an hole were cloned"
-	od -t x1 $SCRATCH_MNT/bar
+	# Verify that the 9th block of foo and the first 2 blocks of the
+	# 6-block hole of foo were cloned into bar.
+	echo "4) Check that a block of 1 extent and 2 blocks of a hole were cloned"
+	od -t x1 $SCRATCH_MNT/bar | _filter_od
 
 	# Clone the same range as before, but clone it into a different offset
 	# of the target (bar) such that it increases the size of the target
-	# by 8Kb.
-	$CLONER_PROG -s 36864 -d 94208 -l 12288 $SCRATCH_MNT/foo \
-		$SCRATCH_MNT/bar
+	# by 2 blocks.
+	$CLONER_PROG -s $((9 * $BLOCK_SIZE)) -d $((23 * $BLOCK_SIZE)) \
+		     -l $((3 * $BLOCK_SIZE)) $SCRATCH_MNT/foo $SCRATCH_MNT/bar
 
-	# Verify that the second half of the 8Kb extent at offset 32768 of foo
-	# and the first 8Kb of the 24kb hole of foo were cloned into bar at
-	# bar's offset 94208 and that bar's size increased by 8Kb.
-	echo "5) Check that 4kb of 1 extent and 8Kb of an hole were cloned and file size increased"
-	od -t x1 $SCRATCH_MNT/bar
+	# Verify that the 9th block of foo and the first 2 blocks of the 6-block
+	# hole of foo were cloned into bar at bar's 23rd block and that bar's
+	# size increased by 2 blocks.
+	echo "5) Check that a block of 1 extent and 2 blocks of a hole were" \
+	     "cloned and file size increased"
+	od -t x1 $SCRATCH_MNT/bar | _filter_od
 
 	# Create a new completely sparse file (no extents, it's a big hole).
-	$XFS_IO_PROG -f -c "truncate 100000" $SCRATCH_MNT/qwerty
+	$XFS_IO_PROG -f -c "truncate $((25 * $BLOCK_SIZE))" $SCRATCH_MNT/qwerty \
+		| _filter_xfs_io_blocks_modified
 	sync
 
 	# Test cloning a range from the sparse file to the bar file without
 	# increasing bar's size.
-	$CLONER_PROG -s 4096 -d 0 -l 8192 $SCRATCH_MNT/qwerty $SCRATCH_MNT/bar
+	$CLONER_PROG -s $((1 * $BLOCK_SIZE)) -d 0 -l $((2 * $BLOCK_SIZE)) \
+		     $SCRATCH_MNT/qwerty $SCRATCH_MNT/bar
 
-	# First 8Kb of bar should now be zeroes.
-	echo "6) Check that 8kb of the hole were cloned"
-	od -t x1 $SCRATCH_MNT/bar
+	# First 2 blocks of bar should now be zeroes.
+	echo "6) Check that 2 blocks of the hole were cloned"
+	od -t x1 $SCRATCH_MNT/bar | _filter_od
 
 	# Test cloning a range from the sparse file to the end of the bar file.
-	# The bar file currently has a size of 106496 bytes.
-	$CLONER_PROG -s 0 -d 106496 -l 32768 $SCRATCH_MNT/qwerty \
+	# The bar file currently has 26 blocks.
+	$CLONER_PROG -s 0 -d $((26 * $BLOCK_SIZE)) -l $((8 * $BLOCK_SIZE)) $SCRATCH_MNT/qwerty \
 		$SCRATCH_MNT/bar
 
-	# Verify bar's size increased to 106496 + 32768 bytes (136Kb), and its
-	# last 32768 bytes are all zeroes.
-	echo "7) Check that 32kb of the hole were cloned and the file size increased"
-	od -t x1 $SCRATCH_MNT/bar
+	# Verify bar's size increased to 26 + 8 blocks, and its
+	# last 8 blocks are all zeroes.
+	echo "7) Check that 8 blocks of the hole were cloned and the file size increased"
+	od -t x1 $SCRATCH_MNT/bar | _filter_od
 
 	# Verify that there are no consistency errors.
 	_check_scratch_fs
diff --git a/tests/btrfs/055.out b/tests/btrfs/055.out
index d8d4893..2d29d6f 100644
--- a/tests/btrfs/055.out
+++ b/tests/btrfs/055.out
@@ -1,347 +1,337 @@
 QA output created by 055
 Testing without the NO_HOLES feature
-wrote 8192/8192 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 8192
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 24576
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 32768
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 98304/98304 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+Blocks modified: [0 - 1]
+Blocks modified: [2 - 3]
+Blocks modified: [6 - 7]
+Blocks modified: [8 - 9]
+Blocks modified: [0 - 23]
 1) Check both extents and the hole were cloned
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0300000
-2) Check half hole and one 8Kb extent were cloned
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+30
+2) Check half hole and the following 2 block extent were cloned
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0300000
-3) Check that 2 extents of 8kb eacg and a 4kb hole were cloned
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+30
+3) Check that 2 extents of 2 blocks each and a hole of 1 block were cloned
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
 *
-0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0250000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+25 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0300000
-4) Check that 4kb of 1 extent and 8Kb of an hole were cloned
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+30
+4) Check that a block of 1 extent and 2 blocks of a hole were cloned
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
 *
-0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0300000
-5) Check that 4kb of 1 extent and 8Kb of an hole were cloned and file size increased
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+30
+5) Check that a block of 1 extent and 2 blocks of a hole were cloned and file size increased
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
 *
-0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0270000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+27 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0300000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0320000
-6) Check that 8kb of the hole were cloned
-0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+32
+6) Check that 2 blocks of the hole were cloned
+0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
 *
-0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0270000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+27 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0300000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0320000
-7) Check that 32kb of the hole were cloned and the file size increased
-0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+32
+7) Check that 8 blocks of the hole were cloned and the file size increased
+0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
 *
-0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0270000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+27 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0300000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0420000
+42
 Testing with the NO_HOLES feature enabled
-wrote 8192/8192 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 8192
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 24576
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 32768
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 98304/98304 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+Blocks modified: [0 - 1]
+Blocks modified: [2 - 3]
+Blocks modified: [6 - 7]
+Blocks modified: [8 - 9]
+Blocks modified: [0 - 23]
 1) Check both extents and the hole were cloned
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0300000
-2) Check half hole and one 8Kb extent were cloned
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+30
+2) Check half hole and the following 2 block extent were cloned
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0300000
-3) Check that 2 extents of 8kb eacg and a 4kb hole were cloned
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+30
+3) Check that 2 extents of 2 blocks each and a hole of 1 block were cloned
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
 *
-0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0250000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+25 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0300000
-4) Check that 4kb of 1 extent and 8Kb of an hole were cloned
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+30
+4) Check that a block of 1 extent and 2 blocks of a hole were cloned
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
 *
-0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0300000
-5) Check that 4kb of 1 extent and 8Kb of an hole were cloned and file size increased
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+30
+5) Check that a block of 1 extent and 2 blocks of a hole were cloned and file size increased
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
 *
-0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0270000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+27 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0300000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0320000
-6) Check that 8kb of the hole were cloned
-0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+32
+6) Check that 2 blocks of the hole were cloned
+0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
 *
-0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0270000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+27 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0300000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0320000
-7) Check that 32kb of the hole were cloned and the file size increased
-0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+32
+7) Check that 8 blocks of the hole were cloned and the file size increased
+0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
 *
-0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0270000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+27 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0300000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0420000
+42
-- 
2.1.0


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

* [PATCH V2 4/5] Fix btrfs/056 to work on non-4k block sized filesystems
  2015-11-30 10:16 [PATCH V2 0/5] Fix Btrfs tests to work on non-4k block sized fs instances Chandan Rajendra
                   ` (2 preceding siblings ...)
  2015-11-30 10:16 ` [PATCH V2 3/5] Fix btrfs/055 " Chandan Rajendra
@ 2015-11-30 10:16 ` Chandan Rajendra
  2015-12-10 17:26   ` Filipe Manana
  2015-11-30 10:17 ` [PATCH V2 5/5] Fix btrfs/096 " Chandan Rajendra
  4 siblings, 1 reply; 11+ messages in thread
From: Chandan Rajendra @ 2015-11-30 10:16 UTC (permalink / raw)
  To: fstests; +Cc: Chandan Rajendra, linux-btrfs, fdmanana, chandan

This commit makes use of the new _filter_xfs_io_blocks_modified and _filter_od
filtering functions to print information in terms of file blocks rather than
file offset.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
---
 tests/btrfs/056     |  51 ++++++++++--------
 tests/btrfs/056.out | 152 +++++++++++++++++++++-------------------------------
 2 files changed, 90 insertions(+), 113 deletions(-)

diff --git a/tests/btrfs/056 b/tests/btrfs/056
index 66a59b8..6dc3bfd 100755
--- a/tests/btrfs/056
+++ b/tests/btrfs/056
@@ -68,33 +68,42 @@ test_btrfs_clone_fsync_log_recover()
 	MOUNT_OPTIONS="$MOUNT_OPTIONS $2"
 	_mount_flakey
 
-	# Create a file with 4 extents and 1 hole, all with a size of 8Kb each.
-	# The hole is in the range [16384, 24576[.
-	$XFS_IO_PROG -s -f -c "pwrite -S 0x01 -b 8192 0 8192" \
-			-c "pwrite -S 0x02 -b 8192 8192 8192" \
-			-c "pwrite -S 0x04 -b 8192 24576 8192" \
-			-c "pwrite -S 0x05 -b 8192 32768 8192" \
-		$SCRATCH_MNT/foo | _filter_xfs_io
-
-	# Clone destination file, 1 extent of 96kb.
-	$XFS_IO_PROG -f -c "pwrite -S 0xff -b 98304 0 98304" -c "fsync" \
-		$SCRATCH_MNT/bar | _filter_xfs_io
-
-	# Clone second half of the 2nd extent, the 8kb hole, the 3rd extent
+	BLOCK_SIZE=$(get_block_size $SCRATCH_MNT)
+
+	EXTENT_SIZE=$((2 * $BLOCK_SIZE))
+
+	# Create a file with 4 extents and 1 hole, all with a size of
+	# 2 blocks each.
+	# The hole is in the block range [4, 5].
+	$XFS_IO_PROG -s -f -c "pwrite -S 0x01 -b $EXTENT_SIZE 0 $EXTENT_SIZE" \
+			-c "pwrite -S 0x02 -b $EXTENT_SIZE $((2 * $BLOCK_SIZE)) $EXTENT_SIZE" \
+			-c "pwrite -S 0x04 -b $EXTENT_SIZE $((6 * $BLOCK_SIZE)) $EXTENT_SIZE" \
+			-c "pwrite -S 0x05 -b $EXTENT_SIZE $((8 * $BLOCK_SIZE)) $EXTENT_SIZE" \
+		$SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
+
+	# Clone destination file, 1 extent of 24 blocks.
+	$XFS_IO_PROG -f -c "pwrite -S 0xff -b $((24 * $BLOCK_SIZE)) 0 $((24 * $BLOCK_SIZE))" \
+		     -c "fsync" $SCRATCH_MNT/bar | _filter_xfs_io_blocks_modified
+
+	# Clone second half of the 2nd extent, the 2 block hole, the 3rd extent
 	# and the first half of the 4th extent into file bar.
-	$CLONER_PROG -s 12288 -d 0 -l 24576 $SCRATCH_MNT/foo $SCRATCH_MNT/bar
+	$CLONER_PROG -s $((3 * $BLOCK_SIZE)) -d 0 -l $((6 * $BLOCK_SIZE)) \
+		     $SCRATCH_MNT/foo $SCRATCH_MNT/bar
 	$XFS_IO_PROG -c "fsync" $SCRATCH_MNT/bar
 
 	# Test small files too consisting of 1 inline extent
-	$XFS_IO_PROG -f -c "pwrite -S 0x00 -b 3500 0 3500" -c "fsync" \
-		$SCRATCH_MNT/foo2 | _filter_xfs_io
+	EXTENT_SIZE=$(($BLOCK_SIZE - 48))
+	$XFS_IO_PROG -f -c "pwrite -S 0x00 -b $EXTENT_SIZE 0 $EXTENT_SIZE" -c "fsync" \
+		$SCRATCH_MNT/foo2 | _filter_xfs_io_blocks_modified
 
-	$XFS_IO_PROG -f -c "pwrite -S 0xcc -b 1000 0 1000" -c "fsync" \
-		$SCRATCH_MNT/bar2 | _filter_xfs_io
+	EXTENT_SIZE=$(($BLOCK_SIZE - 1048))
+	$XFS_IO_PROG -f -c "pwrite -S 0xcc -b $EXTENT_SIZE 0 $EXTENT_SIZE" -c "fsync" \
+		$SCRATCH_MNT/bar2 | _filter_xfs_io_blocks_modified
 
 	# Clone the entire foo2 file into bar2, overwriting all data in bar2
 	# and increasing its size.
-	$CLONER_PROG -s 0 -d 0 -l 3500 $SCRATCH_MNT/foo2 $SCRATCH_MNT/bar2
+	EXTENT_SIZE=$(($BLOCK_SIZE - 48))
+	$CLONER_PROG -s 0 -d 0 -l $EXTENT_SIZE $SCRATCH_MNT/foo2 $SCRATCH_MNT/bar2
 	$XFS_IO_PROG -c "fsync" $SCRATCH_MNT/bar2
 
 	_flakey_drop_and_remount yes
@@ -102,10 +111,10 @@ test_btrfs_clone_fsync_log_recover()
 	# Verify the cloned range was persisted by fsync and the log recovery
 	# code did its work well.
 	echo "Verifying file bar content"
-	od -t x1 $SCRATCH_MNT/bar
+	od -t x1 $SCRATCH_MNT/bar | _filter_od
 
 	echo "Verifying file bar2 content"
-	od -t x1 $SCRATCH_MNT/bar2
+	od -t x1 $SCRATCH_MNT/bar2 | _filter_od
 
 	_unmount_flakey
 
diff --git a/tests/btrfs/056.out b/tests/btrfs/056.out
index 1b77ae3..c4c6b2c 100644
--- a/tests/btrfs/056.out
+++ b/tests/btrfs/056.out
@@ -1,129 +1,97 @@
 QA output created by 056
 Testing without the NO_HOLES feature
-wrote 8192/8192 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 8192
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 24576
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 32768
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 98304/98304 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 3500/3500 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1000/1000 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+Blocks modified: [0 - 1]
+Blocks modified: [2 - 3]
+Blocks modified: [6 - 7]
+Blocks modified: [8 - 9]
+Blocks modified: [0 - 23]
+Blocks modified: [0 - 0]
+Blocks modified: [0 - 0]
 Verifying file bar content
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0010000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0030000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+3 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0050000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+5 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0300000
+30
 Verifying file bar2 content
-0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0006640 00 00 00 00 00 00 00 00 00 00 00 00
-0006654
+0
 Testing without the NO_HOLES feature and compression (lzo)
-wrote 8192/8192 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 8192
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 24576
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 32768
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 98304/98304 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 3500/3500 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1000/1000 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+Blocks modified: [0 - 1]
+Blocks modified: [2 - 3]
+Blocks modified: [6 - 7]
+Blocks modified: [8 - 9]
+Blocks modified: [0 - 23]
+Blocks modified: [0 - 0]
+Blocks modified: [0 - 0]
 Verifying file bar content
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0010000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0030000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+3 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0050000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+5 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0300000
+30
 Verifying file bar2 content
-0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0006640 00 00 00 00 00 00 00 00 00 00 00 00
-0006654
+0
 Testing with the NO_HOLES feature enabled
-wrote 8192/8192 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 8192
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 24576
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 32768
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 98304/98304 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 3500/3500 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1000/1000 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+Blocks modified: [0 - 1]
+Blocks modified: [2 - 3]
+Blocks modified: [6 - 7]
+Blocks modified: [8 - 9]
+Blocks modified: [0 - 23]
+Blocks modified: [0 - 0]
+Blocks modified: [0 - 0]
 Verifying file bar content
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0010000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0030000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+3 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0050000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+5 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0300000
+30
 Verifying file bar2 content
-0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0006640 00 00 00 00 00 00 00 00 00 00 00 00
-0006654
+0
 Testing with the NO_HOLES feature enabled and compression (lzo)
-wrote 8192/8192 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 8192
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 24576
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 32768
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 98304/98304 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 3500/3500 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1000/1000 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+Blocks modified: [0 - 1]
+Blocks modified: [2 - 3]
+Blocks modified: [6 - 7]
+Blocks modified: [8 - 9]
+Blocks modified: [0 - 23]
+Blocks modified: [0 - 0]
+Blocks modified: [0 - 0]
 Verifying file bar content
-0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 *
-0010000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0030000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
+3 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
 *
-0050000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
+5 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
 *
-0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
+6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 *
-0300000
+30
 Verifying file bar2 content
-0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
-0006640 00 00 00 00 00 00 00 00 00 00 00 00
-0006654
+0
-- 
2.1.0


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

* [PATCH V2 5/5] Fix btrfs/096 to work on non-4k block sized filesystems
  2015-11-30 10:16 [PATCH V2 0/5] Fix Btrfs tests to work on non-4k block sized fs instances Chandan Rajendra
                   ` (3 preceding siblings ...)
  2015-11-30 10:16 ` [PATCH V2 4/5] Fix btrfs/056 " Chandan Rajendra
@ 2015-11-30 10:17 ` Chandan Rajendra
  2015-12-10 17:25   ` Filipe Manana
  4 siblings, 1 reply; 11+ messages in thread
From: Chandan Rajendra @ 2015-11-30 10:17 UTC (permalink / raw)
  To: fstests; +Cc: Chandan Rajendra, linux-btrfs, fdmanana, chandan

This commit makes use of the new _filter_xfs_io_blocks_modified filtering
function to print information in terms of file blocks rather than file
offset.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
---
 tests/btrfs/096     | 45 +++++++++++++++++++++++++--------------------
 tests/btrfs/096.out | 15 +++++----------
 2 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/tests/btrfs/096 b/tests/btrfs/096
index f5b3a7f..896a209 100755
--- a/tests/btrfs/096
+++ b/tests/btrfs/096
@@ -51,30 +51,35 @@ rm -f $seqres.full
 _scratch_mkfs >>$seqres.full 2>&1
 _scratch_mount
 
-# Create our test files. File foo has the same 2K of data at offset 4K as file
-# bar has at its offset 0.
-$XFS_IO_PROG -f -s -c "pwrite -S 0xaa 0 4K" \
-		-c "pwrite -S 0xbb 4k 2K" \
-		-c "pwrite -S 0xcc 8K 4K" \
-		$SCRATCH_MNT/foo | _filter_xfs_io
+BLOCK_SIZE=$(get_block_size $SCRATCH_MNT)
 
-# File bar consists of a single inline extent (2K size).
-$XFS_IO_PROG -f -s -c "pwrite -S 0xbb 0 2K" \
-		$SCRATCH_MNT/bar | _filter_xfs_io
+# Create our test files. File foo has the same 2k of data at offset $BLOCK_SIZE
+# as file bar has at its offset 0.
+$XFS_IO_PROG -f -s -c "pwrite -S 0xaa 0 $BLOCK_SIZE" \
+		-c "pwrite -S 0xbb $BLOCK_SIZE 2k" \
+		-c "pwrite -S 0xcc $(($BLOCK_SIZE * 2)) $BLOCK_SIZE" \
+		$SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
 
-# Now call the clone ioctl to clone the extent of file bar into file foo at its
-# offset 4K. This made file foo have an inline extent at offset 4K, something
-# which the btrfs code can not deal with in future IO operations because all
-# inline extents are supposed to start at an offset of 0, resulting in all sorts
-# of chaos.
-# So here we validate that the clone ioctl returns an EOPNOTSUPP, which is what
-# it returns for other cases dealing with inlined extents.
-$CLONER_PROG -s 0 -d $((4 * 1024)) -l $((2 * 1024)) \
+# File bar consists of a single inline extent (2k in size).
+$XFS_IO_PROG -f -s -c "pwrite -S 0xbb 0 2k" \
+		$SCRATCH_MNT/bar | _filter_xfs_io_blocks_modified
+
+# Now call the clone ioctl to clone the extent of file bar into file
+# foo at its $BLOCK_SIZE offset. This made file foo have an inline
+# extent at offset $BLOCK_SIZE, something which the btrfs code can not
+# deal with in future IO operations because all inline extents are
+# supposed to start at an offset of 0, resulting in all sorts of
+# chaos.
+# So here we validate that the clone ioctl returns an EOPNOTSUPP,
+# which is what it returns for other cases dealing with inlined
+# extents.
+$CLONER_PROG -s 0 -d $BLOCK_SIZE -l 2048 \
 	$SCRATCH_MNT/bar $SCRATCH_MNT/foo
 
-# Because of the inline extent at offset 4K, the following write made the kernel
-# crash with a BUG_ON().
-$XFS_IO_PROG -c "pwrite -S 0xdd 6K 2K" $SCRATCH_MNT/foo | _filter_xfs_io
+# Because of the inline extent at offset $BLOCK_SIZE, the following
+# write made the kernel crash with a BUG_ON().
+$XFS_IO_PROG -c "pwrite -S 0xdd $(($BLOCK_SIZE + 2048)) 2k" \
+	     $SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
 
 status=0
 exit
diff --git a/tests/btrfs/096.out b/tests/btrfs/096.out
index 235198d..2a4251e 100644
--- a/tests/btrfs/096.out
+++ b/tests/btrfs/096.out
@@ -1,12 +1,7 @@
 QA output created by 096
-wrote 4096/4096 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 2048/2048 bytes at offset 4096
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 4096/4096 bytes at offset 8192
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 2048/2048 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+Blocks modified: [0 - 0]
+Blocks modified: [1 - 1]
+Blocks modified: [2 - 2]
+Blocks modified: [0 - 0]
 clone failed: Operation not supported
-wrote 2048/2048 bytes at offset 6144
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+Blocks modified: [1 - 1]
-- 
2.1.0


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

* Re: [PATCH V2 1/5] Filter xfs_io and od's output in units of FS block size
  2015-11-30 10:16 ` [PATCH V2 1/5] Filter xfs_io and od's output in units of FS block size Chandan Rajendra
@ 2015-12-10 17:24   ` Filipe Manana
  0 siblings, 0 replies; 11+ messages in thread
From: Filipe Manana @ 2015-12-10 17:24 UTC (permalink / raw)
  To: Chandan Rajendra; +Cc: fstests, linux-btrfs, chandan

On Mon, Nov 30, 2015 at 10:16 AM, Chandan Rajendra
<chandan@linux.vnet.ibm.com> wrote:
> The helpers introduced in this commit will be used to make btrfs tests that
> assume 4k as the block size to work on non-4k blocksized filesystem instances
> as well.
>
> Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>

Thanks!

> ---
>  common/filter | 45 +++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 45 insertions(+)
>
> diff --git a/common/filter b/common/filter
> index af456c9..05f2fab 100644
> --- a/common/filter
> +++ b/common/filter
> @@ -229,6 +229,38 @@ _filter_xfs_io_unique()
>      common_line_filter | _filter_xfs_io
>  }
>
> +_filter_xfs_io_units_modified()
> +{
> +       UNIT=$1
> +       UNIT_SIZE=$2
> +
> +       $AWK_PROG -v unit="$UNIT" -v unit_size=$UNIT_SIZE '
> +               /wrote/ {
> +                       split($2, bytes, "/")
> +
> +                       bytes_written = strtonum(bytes[1])
> +
> +                       offset = strtonum($NF)
> +
> +                       unit_start = offset / unit_size
> +                       unit_start = int(unit_start)
> +                       unit_end = (offset + bytes_written - 1) / unit_size
> +                       unit_end = int(unit_end)
> +
> +                       printf("%ss modified: [%d - %d]\n", unit, unit_start, unit_end)
> +
> +                       next
> +               }
> +       '
> +}
> +
> +_filter_xfs_io_blocks_modified()
> +{
> +       BLOCK_SIZE=$(get_block_size $SCRATCH_MNT)
> +
> +       _filter_xfs_io_units_modified "Block" $BLOCK_SIZE
> +}
> +
>  _filter_test_dir()
>  {
>         sed -e "s,$TEST_DEV,TEST_DEV,g" -e "s,$TEST_DIR,TEST_DIR,g"
> @@ -323,5 +355,18 @@ _filter_ro_mount() {
>             -e "s/mount: cannot mount block device/mount: cannot mount/g"
>  }
>
> +_filter_od()
> +{
> +       BLOCK_SIZE=$(get_block_size $SCRATCH_MNT)
> +       $AWK_PROG -v block_size=$BLOCK_SIZE '
> +               /^[0-9]+/ {
> +                       offset = strtonum("0"$1);
> +                       $1 = sprintf("%o", offset / block_size);
> +                       print $0;
> +               }
> +               /\*/
> +       '
> +}
> +
>  # make sure this script returns success
>  /bin/true
> --
> 2.1.0
>



-- 
Filipe David Manana,

"Reasonable men adapt themselves to the world.
 Unreasonable men adapt the world to themselves.
 That's why all progress depends on unreasonable men."

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

* Re: [PATCH V2 2/5] Fix btrfs/017 to work on non-4k block sized filesystems
  2015-11-30 10:16 ` [PATCH V2 2/5] Fix btrfs/017 to work on non-4k block sized filesystems Chandan Rajendra
@ 2015-12-10 17:25   ` Filipe Manana
  0 siblings, 0 replies; 11+ messages in thread
From: Filipe Manana @ 2015-12-10 17:25 UTC (permalink / raw)
  To: Chandan Rajendra; +Cc: fstests, linux-btrfs, chandan

On Mon, Nov 30, 2015 at 10:16 AM, Chandan Rajendra
<chandan@linux.vnet.ibm.com> wrote:
> This commit makes use of the new _filter_xfs_io_blocks_modified filtering
> function to print information in terms of file blocks rather than file
> offset.
>
> Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>

Thanks!

> ---
>  tests/btrfs/017     | 16 ++++++++++++----
>  tests/btrfs/017.out |  3 +--
>  2 files changed, 13 insertions(+), 6 deletions(-)
>
> diff --git a/tests/btrfs/017 b/tests/btrfs/017
> index f8855e3..34c5f0a 100755
> --- a/tests/btrfs/017
> +++ b/tests/btrfs/017
> @@ -63,13 +63,21 @@ rm -f $seqres.full
>  _scratch_mkfs "--nodesize 65536" >>$seqres.full 2>&1
>  _scratch_mount
>
> -$XFS_IO_PROG -f -d -c "pwrite 0 8K" $SCRATCH_MNT/foo | _filter_xfs_io
> +BLOCK_SIZE=$(get_block_size $SCRATCH_MNT)
> +EXTENT_SIZE=$((2 * $BLOCK_SIZE))
> +
> +$XFS_IO_PROG -f -d -c "pwrite 0 $EXTENT_SIZE" $SCRATCH_MNT/foo \
> +       | _filter_xfs_io_blocks_modified
>
>  _run_btrfs_util_prog subvolume snapshot $SCRATCH_MNT $SCRATCH_MNT/snap
>
> -$CLONER_PROG -s 0 -d 0 -l 8192 $SCRATCH_MNT/foo $SCRATCH_MNT/foo-reflink
> -$CLONER_PROG -s 0 -d 0 -l 8192 $SCRATCH_MNT/foo $SCRATCH_MNT/snap/foo-reflink
> -$CLONER_PROG -s 0 -d 0 -l 8192 $SCRATCH_MNT/foo $SCRATCH_MNT/snap/foo-reflink2
> +$CLONER_PROG -s 0 -d 0 -l $EXTENT_SIZE $SCRATCH_MNT/foo $SCRATCH_MNT/foo-reflink
> +
> +$CLONER_PROG -s 0 -d 0 -l $EXTENT_SIZE $SCRATCH_MNT/foo \
> +            $SCRATCH_MNT/snap/foo-reflink
> +
> +$CLONER_PROG -s 0 -d 0 -l $EXTENT_SIZE $SCRATCH_MNT/foo \
> +            $SCRATCH_MNT/snap/foo-reflink2
>
>  _run_btrfs_util_prog quota enable $SCRATCH_MNT
>  _run_btrfs_util_prog quota rescan -w $SCRATCH_MNT
> diff --git a/tests/btrfs/017.out b/tests/btrfs/017.out
> index f940f3a..503eb88 100644
> --- a/tests/btrfs/017.out
> +++ b/tests/btrfs/017.out
> @@ -1,5 +1,4 @@
>  QA output created by 017
> -wrote 8192/8192 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Blocks modified: [0 - 1]
>  65536 65536
>  65536 65536
> --
> 2.1.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe fstests" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Filipe David Manana,

"Reasonable men adapt themselves to the world.
 Unreasonable men adapt the world to themselves.
 That's why all progress depends on unreasonable men."

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

* Re: [PATCH V2 3/5] Fix btrfs/055 to work on non-4k block sized filesystems
  2015-11-30 10:16 ` [PATCH V2 3/5] Fix btrfs/055 " Chandan Rajendra
@ 2015-12-10 17:25   ` Filipe Manana
  0 siblings, 0 replies; 11+ messages in thread
From: Filipe Manana @ 2015-12-10 17:25 UTC (permalink / raw)
  To: Chandan Rajendra; +Cc: fstests, linux-btrfs, chandan

On Mon, Nov 30, 2015 at 10:16 AM, Chandan Rajendra
<chandan@linux.vnet.ibm.com> wrote:
> This commit makes use of the new _filter_xfs_io_blocks_modified and _filter_od
> filtering functions to print information in terms of file blocks rather than
> file offset.
>
> Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>

Thanks!

> ---
>  tests/btrfs/055     | 128 ++++++++++--------
>  tests/btrfs/055.out | 378 +++++++++++++++++++++++++---------------------------
>  2 files changed, 259 insertions(+), 247 deletions(-)
>
> diff --git a/tests/btrfs/055 b/tests/btrfs/055
> index c0dd9ed..1f50850 100755
> --- a/tests/btrfs/055
> +++ b/tests/btrfs/055
> @@ -60,88 +60,110 @@ test_btrfs_clone_with_holes()
>         _scratch_mkfs "$1" >/dev/null 2>&1
>         _scratch_mount
>
> -       # Create a file with 4 extents and 1 hole, all with a size of 8Kb each.
> -       # The hole is in the range [16384, 24576[.
> -       $XFS_IO_PROG -s -f -c "pwrite -S 0x01 -b 8192 0 8192" \
> -                       -c "pwrite -S 0x02 -b 8192 8192 8192" \
> -                       -c "pwrite -S 0x04 -b 8192 24576 8192" \
> -                       -c "pwrite -S 0x05 -b 8192 32768 8192" \
> -               $SCRATCH_MNT/foo | _filter_xfs_io
> +       BLOCK_SIZE=$(get_block_size $SCRATCH_MNT)
>
> -       # Clone destination file, 1 extent of 96kb.
> -       $XFS_IO_PROG -s -f -c "pwrite -S 0xff -b 98304 0 98304" \
> -               $SCRATCH_MNT/bar | _filter_xfs_io
> +       EXTENT_SIZE=$((2 * $BLOCK_SIZE))
>
> -       # Clone 2nd extent, 8Kb hole and 3rd extent of foo into bar.
> -       $CLONER_PROG -s 8192 -d 0 -l 24576 $SCRATCH_MNT/foo $SCRATCH_MNT/bar
> +       OFFSET=0
> +
> +       # Create a file with 4 extents and 1 hole, all with 2 blocks each.
> +       # The hole is in the block range [4, 5[.
> +       $XFS_IO_PROG -s -f -c "pwrite -S 0x01 -b $EXTENT_SIZE $OFFSET $EXTENT_SIZE" \
> +                    $SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
> +
> +       OFFSET=$(($OFFSET + $EXTENT_SIZE))
> +       $XFS_IO_PROG -s -f -c "pwrite -S 0x02 -b $EXTENT_SIZE $OFFSET $EXTENT_SIZE" \
> +                    $SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
> +
> +       OFFSET=$(($OFFSET + 2 * $EXTENT_SIZE))
> +       $XFS_IO_PROG -s -f -c "pwrite -S 0x04 -b $EXTENT_SIZE $OFFSET $EXTENT_SIZE" \
> +                    $SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
> +
> +       OFFSET=$(($OFFSET + $EXTENT_SIZE))
> +       $XFS_IO_PROG -s -f -c "pwrite -S 0x05 -b $EXTENT_SIZE $OFFSET $EXTENT_SIZE" \
> +                    $SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
> +
> +       # Clone destination file, 1 extent of 24 blocks.
> +       EXTENT_SIZE=$((24 * $BLOCK_SIZE))
> +       $XFS_IO_PROG -s -f -c "pwrite -S 0xff -b $EXTENT_SIZE 0 $EXTENT_SIZE" \
> +               $SCRATCH_MNT/bar | _filter_xfs_io_blocks_modified
> +
> +       # Clone 2nd extent, 2-blocks sized hole and 3rd extent of foo into bar.
> +       $CLONER_PROG -s $((2 * $BLOCK_SIZE)) -d 0 -l $((6 * $BLOCK_SIZE)) \
> +                    $SCRATCH_MNT/foo $SCRATCH_MNT/bar
>
>         # Verify both extents and the hole were cloned.
>         echo "1) Check both extents and the hole were cloned"
> -       od -t x1 $SCRATCH_MNT/bar
> +       od -t x1 $SCRATCH_MNT/bar | _filter_od
>
> -       # Cloning range starts at the middle of an hole.
> -       $CLONER_PROG -s 20480 -d 32768 -l 12288 $SCRATCH_MNT/foo \
> -               $SCRATCH_MNT/bar
> +       # Cloning range starts at the middle of a hole.
> +       $CLONER_PROG -s $((5 * $BLOCK_SIZE)) -d $((8 * $BLOCK_SIZE)) \
> +                    -l $((3 * $BLOCK_SIZE)) $SCRATCH_MNT/foo $SCRATCH_MNT/bar
>
> -       # Verify that half of the hole and the following 8Kb extent were cloned.
> -       echo "2) Check half hole and one 8Kb extent were cloned"
> -       od -t x1 $SCRATCH_MNT/bar
> +       # Verify that half of the hole and the following 2 block extent were cloned.
> +       echo "2) Check half hole and the following 2 block extent were cloned"
> +       od -t x1 $SCRATCH_MNT/bar | _filter_od
>
> -       # Cloning range ends at the middle of an hole.
> -       $CLONER_PROG -s 0 -d 65536 -l 20480 $SCRATCH_MNT/foo $SCRATCH_MNT/bar
> +       # Cloning range ends at the middle of a hole.
> +       $CLONER_PROG -s 0 -d $((16 * $BLOCK_SIZE)) -l $((5 * $BLOCK_SIZE)) \
> +                    $SCRATCH_MNT/foo $SCRATCH_MNT/bar
>
> -       # Verify that 2 extents of 8kb and a 4kb hole were cloned.
> -       echo "3) Check that 2 extents of 8kb eacg and a 4kb hole were cloned"
> -       od -t x1 $SCRATCH_MNT/bar
> +       # Verify that 2 extents of 2 blocks size and a 1-block hole were cloned.
> +       echo "3) Check that 2 extents of 2 blocks each and a hole of 1 block were cloned"
> +       od -t x1 $SCRATCH_MNT/bar | _filter_od
>
> -       # Create a 24Kb hole at the end of the source file (foo).
> -       $XFS_IO_PROG -c "truncate 65536" $SCRATCH_MNT/foo
> +       # Create a 6-block hole at the end of the source file (foo).
> +       $XFS_IO_PROG -c "truncate $((16 * $BLOCK_SIZE))" $SCRATCH_MNT/foo \
> +               | _filter_xfs_io_blocks_modified
>         sync
>
>         # Now clone a range that overlaps that hole at the end of the foo file.
> -       # It should clone the last 4Kb of the extent at offset 32768 and the
> -       # first 8kb of the 24kb hole at the end of foo.
> -       $CLONER_PROG -s 36864 -d 86016 -l 12288 $SCRATCH_MNT/foo \
> -               $SCRATCH_MNT/bar
> +       # It should clone the 10th block and the first two blocks of the hole
> +       # at the end of foo.
> +       $CLONER_PROG -s $((9 * $BLOCK_SIZE)) -d $((21 * $BLOCK_SIZE)) \
> +                    -l $((3 * $BLOCK_SIZE)) $SCRATCH_MNT/foo $SCRATCH_MNT/bar
>
> -       # Verify that the second half of the 8Kb extent at offset 32768 of foo
> -       # and the first 8Kb of the 24kb hole of foo were cloned into bar.
> -       echo "4) Check that 4kb of 1 extent and 8Kb of an hole were cloned"
> -       od -t x1 $SCRATCH_MNT/bar
> +       # Verify that the 9th block of foo and the first 2 blocks of the
> +       # 6-block hole of foo were cloned into bar.
> +       echo "4) Check that a block of 1 extent and 2 blocks of a hole were cloned"
> +       od -t x1 $SCRATCH_MNT/bar | _filter_od
>
>         # Clone the same range as before, but clone it into a different offset
>         # of the target (bar) such that it increases the size of the target
> -       # by 8Kb.
> -       $CLONER_PROG -s 36864 -d 94208 -l 12288 $SCRATCH_MNT/foo \
> -               $SCRATCH_MNT/bar
> +       # by 2 blocks.
> +       $CLONER_PROG -s $((9 * $BLOCK_SIZE)) -d $((23 * $BLOCK_SIZE)) \
> +                    -l $((3 * $BLOCK_SIZE)) $SCRATCH_MNT/foo $SCRATCH_MNT/bar
>
> -       # Verify that the second half of the 8Kb extent at offset 32768 of foo
> -       # and the first 8Kb of the 24kb hole of foo were cloned into bar at
> -       # bar's offset 94208 and that bar's size increased by 8Kb.
> -       echo "5) Check that 4kb of 1 extent and 8Kb of an hole were cloned and file size increased"
> -       od -t x1 $SCRATCH_MNT/bar
> +       # Verify that the 9th block of foo and the first 2 blocks of the 6-block
> +       # hole of foo were cloned into bar at bar's 23rd block and that bar's
> +       # size increased by 2 blocks.
> +       echo "5) Check that a block of 1 extent and 2 blocks of a hole were" \
> +            "cloned and file size increased"
> +       od -t x1 $SCRATCH_MNT/bar | _filter_od
>
>         # Create a new completely sparse file (no extents, it's a big hole).
> -       $XFS_IO_PROG -f -c "truncate 100000" $SCRATCH_MNT/qwerty
> +       $XFS_IO_PROG -f -c "truncate $((25 * $BLOCK_SIZE))" $SCRATCH_MNT/qwerty \
> +               | _filter_xfs_io_blocks_modified
>         sync
>
>         # Test cloning a range from the sparse file to the bar file without
>         # increasing bar's size.
> -       $CLONER_PROG -s 4096 -d 0 -l 8192 $SCRATCH_MNT/qwerty $SCRATCH_MNT/bar
> +       $CLONER_PROG -s $((1 * $BLOCK_SIZE)) -d 0 -l $((2 * $BLOCK_SIZE)) \
> +                    $SCRATCH_MNT/qwerty $SCRATCH_MNT/bar
>
> -       # First 8Kb of bar should now be zeroes.
> -       echo "6) Check that 8kb of the hole were cloned"
> -       od -t x1 $SCRATCH_MNT/bar
> +       # First 2 blocks of bar should now be zeroes.
> +       echo "6) Check that 2 blocks of the hole were cloned"
> +       od -t x1 $SCRATCH_MNT/bar | _filter_od
>
>         # Test cloning a range from the sparse file to the end of the bar file.
> -       # The bar file currently has a size of 106496 bytes.
> -       $CLONER_PROG -s 0 -d 106496 -l 32768 $SCRATCH_MNT/qwerty \
> +       # The bar file currently has 26 blocks.
> +       $CLONER_PROG -s 0 -d $((26 * $BLOCK_SIZE)) -l $((8 * $BLOCK_SIZE)) $SCRATCH_MNT/qwerty \
>                 $SCRATCH_MNT/bar
>
> -       # Verify bar's size increased to 106496 + 32768 bytes (136Kb), and its
> -       # last 32768 bytes are all zeroes.
> -       echo "7) Check that 32kb of the hole were cloned and the file size increased"
> -       od -t x1 $SCRATCH_MNT/bar
> +       # Verify bar's size increased to 26 + 8 blocks, and its
> +       # last 8 blocks are all zeroes.
> +       echo "7) Check that 8 blocks of the hole were cloned and the file size increased"
> +       od -t x1 $SCRATCH_MNT/bar | _filter_od
>
>         # Verify that there are no consistency errors.
>         _check_scratch_fs
> diff --git a/tests/btrfs/055.out b/tests/btrfs/055.out
> index d8d4893..2d29d6f 100644
> --- a/tests/btrfs/055.out
> +++ b/tests/btrfs/055.out
> @@ -1,347 +1,337 @@
>  QA output created by 055
>  Testing without the NO_HOLES feature
> -wrote 8192/8192 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 8192
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 24576
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 32768
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 98304/98304 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Blocks modified: [0 - 1]
> +Blocks modified: [2 - 3]
> +Blocks modified: [6 - 7]
> +Blocks modified: [8 - 9]
> +Blocks modified: [0 - 23]
>  1) Check both extents and the hole were cloned
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0300000
> -2) Check half hole and one 8Kb extent were cloned
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +30
> +2) Check half hole and the following 2 block extent were cloned
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0300000
> -3) Check that 2 extents of 8kb eacg and a 4kb hole were cloned
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +30
> +3) Check that 2 extents of 2 blocks each and a hole of 1 block were cloned
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
> +20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
>  *
> -0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0250000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +25 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0300000
> -4) Check that 4kb of 1 extent and 8Kb of an hole were cloned
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +30
> +4) Check that a block of 1 extent and 2 blocks of a hole were cloned
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
> +20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
>  *
> -0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0300000
> -5) Check that 4kb of 1 extent and 8Kb of an hole were cloned and file size increased
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +30
> +5) Check that a block of 1 extent and 2 blocks of a hole were cloned and file size increased
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
> +20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
>  *
> -0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0270000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +27 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0300000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0320000
> -6) Check that 8kb of the hole were cloned
> -0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +32
> +6) Check that 2 blocks of the hole were cloned
> +0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
> +20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
>  *
> -0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0270000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +27 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0300000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0320000
> -7) Check that 32kb of the hole were cloned and the file size increased
> -0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +32
> +7) Check that 8 blocks of the hole were cloned and the file size increased
> +0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
> +20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
>  *
> -0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0270000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +27 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0300000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0420000
> +42
>  Testing with the NO_HOLES feature enabled
> -wrote 8192/8192 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 8192
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 24576
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 32768
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 98304/98304 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Blocks modified: [0 - 1]
> +Blocks modified: [2 - 3]
> +Blocks modified: [6 - 7]
> +Blocks modified: [8 - 9]
> +Blocks modified: [0 - 23]
>  1) Check both extents and the hole were cloned
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0300000
> -2) Check half hole and one 8Kb extent were cloned
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +30
> +2) Check half hole and the following 2 block extent were cloned
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0300000
> -3) Check that 2 extents of 8kb eacg and a 4kb hole were cloned
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +30
> +3) Check that 2 extents of 2 blocks each and a hole of 1 block were cloned
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
> +20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
>  *
> -0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0250000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +25 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0300000
> -4) Check that 4kb of 1 extent and 8Kb of an hole were cloned
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +30
> +4) Check that a block of 1 extent and 2 blocks of a hole were cloned
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
> +20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
>  *
> -0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0300000
> -5) Check that 4kb of 1 extent and 8Kb of an hole were cloned and file size increased
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +30
> +5) Check that a block of 1 extent and 2 blocks of a hole were cloned and file size increased
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0020000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
> +20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
>  *
> -0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0270000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +27 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0300000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0320000
> -6) Check that 8kb of the hole were cloned
> -0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +32
> +6) Check that 2 blocks of the hole were cloned
> +0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
> +20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
>  *
> -0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0270000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +27 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0300000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0320000
> -7) Check that 32kb of the hole were cloned and the file size increased
> -0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +32
> +7) Check that 8 blocks of the hole were cloned and the file size increased
> +0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0040000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +4 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0100000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0110000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +11 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0130000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +13 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0200000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
> +20 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
>  *
> -0220000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +22 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0240000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0250000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +25 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0260000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0270000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +27 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0300000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0420000
> +42
> --
> 2.1.0
>



-- 
Filipe David Manana,

"Reasonable men adapt themselves to the world.
 Unreasonable men adapt the world to themselves.
 That's why all progress depends on unreasonable men."

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

* Re: [PATCH V2 5/5] Fix btrfs/096 to work on non-4k block sized filesystems
  2015-11-30 10:17 ` [PATCH V2 5/5] Fix btrfs/096 " Chandan Rajendra
@ 2015-12-10 17:25   ` Filipe Manana
  0 siblings, 0 replies; 11+ messages in thread
From: Filipe Manana @ 2015-12-10 17:25 UTC (permalink / raw)
  To: Chandan Rajendra; +Cc: fstests, linux-btrfs, chandan

On Mon, Nov 30, 2015 at 10:17 AM, Chandan Rajendra
<chandan@linux.vnet.ibm.com> wrote:
> This commit makes use of the new _filter_xfs_io_blocks_modified filtering
> function to print information in terms of file blocks rather than file
> offset.
>
> Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>

Thanks!

> ---
>  tests/btrfs/096     | 45 +++++++++++++++++++++++++--------------------
>  tests/btrfs/096.out | 15 +++++----------
>  2 files changed, 30 insertions(+), 30 deletions(-)
>
> diff --git a/tests/btrfs/096 b/tests/btrfs/096
> index f5b3a7f..896a209 100755
> --- a/tests/btrfs/096
> +++ b/tests/btrfs/096
> @@ -51,30 +51,35 @@ rm -f $seqres.full
>  _scratch_mkfs >>$seqres.full 2>&1
>  _scratch_mount
>
> -# Create our test files. File foo has the same 2K of data at offset 4K as file
> -# bar has at its offset 0.
> -$XFS_IO_PROG -f -s -c "pwrite -S 0xaa 0 4K" \
> -               -c "pwrite -S 0xbb 4k 2K" \
> -               -c "pwrite -S 0xcc 8K 4K" \
> -               $SCRATCH_MNT/foo | _filter_xfs_io
> +BLOCK_SIZE=$(get_block_size $SCRATCH_MNT)
>
> -# File bar consists of a single inline extent (2K size).
> -$XFS_IO_PROG -f -s -c "pwrite -S 0xbb 0 2K" \
> -               $SCRATCH_MNT/bar | _filter_xfs_io
> +# Create our test files. File foo has the same 2k of data at offset $BLOCK_SIZE
> +# as file bar has at its offset 0.
> +$XFS_IO_PROG -f -s -c "pwrite -S 0xaa 0 $BLOCK_SIZE" \
> +               -c "pwrite -S 0xbb $BLOCK_SIZE 2k" \
> +               -c "pwrite -S 0xcc $(($BLOCK_SIZE * 2)) $BLOCK_SIZE" \
> +               $SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
>
> -# Now call the clone ioctl to clone the extent of file bar into file foo at its
> -# offset 4K. This made file foo have an inline extent at offset 4K, something
> -# which the btrfs code can not deal with in future IO operations because all
> -# inline extents are supposed to start at an offset of 0, resulting in all sorts
> -# of chaos.
> -# So here we validate that the clone ioctl returns an EOPNOTSUPP, which is what
> -# it returns for other cases dealing with inlined extents.
> -$CLONER_PROG -s 0 -d $((4 * 1024)) -l $((2 * 1024)) \
> +# File bar consists of a single inline extent (2k in size).
> +$XFS_IO_PROG -f -s -c "pwrite -S 0xbb 0 2k" \
> +               $SCRATCH_MNT/bar | _filter_xfs_io_blocks_modified
> +
> +# Now call the clone ioctl to clone the extent of file bar into file
> +# foo at its $BLOCK_SIZE offset. This made file foo have an inline
> +# extent at offset $BLOCK_SIZE, something which the btrfs code can not
> +# deal with in future IO operations because all inline extents are
> +# supposed to start at an offset of 0, resulting in all sorts of
> +# chaos.
> +# So here we validate that the clone ioctl returns an EOPNOTSUPP,
> +# which is what it returns for other cases dealing with inlined
> +# extents.
> +$CLONER_PROG -s 0 -d $BLOCK_SIZE -l 2048 \
>         $SCRATCH_MNT/bar $SCRATCH_MNT/foo
>
> -# Because of the inline extent at offset 4K, the following write made the kernel
> -# crash with a BUG_ON().
> -$XFS_IO_PROG -c "pwrite -S 0xdd 6K 2K" $SCRATCH_MNT/foo | _filter_xfs_io
> +# Because of the inline extent at offset $BLOCK_SIZE, the following
> +# write made the kernel crash with a BUG_ON().
> +$XFS_IO_PROG -c "pwrite -S 0xdd $(($BLOCK_SIZE + 2048)) 2k" \
> +            $SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
>
>  status=0
>  exit
> diff --git a/tests/btrfs/096.out b/tests/btrfs/096.out
> index 235198d..2a4251e 100644
> --- a/tests/btrfs/096.out
> +++ b/tests/btrfs/096.out
> @@ -1,12 +1,7 @@
>  QA output created by 096
> -wrote 4096/4096 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 2048/2048 bytes at offset 4096
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 4096/4096 bytes at offset 8192
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 2048/2048 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Blocks modified: [0 - 0]
> +Blocks modified: [1 - 1]
> +Blocks modified: [2 - 2]
> +Blocks modified: [0 - 0]
>  clone failed: Operation not supported
> -wrote 2048/2048 bytes at offset 6144
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Blocks modified: [1 - 1]
> --
> 2.1.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe fstests" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Filipe David Manana,

"Reasonable men adapt themselves to the world.
 Unreasonable men adapt the world to themselves.
 That's why all progress depends on unreasonable men."

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

* Re: [PATCH V2 4/5] Fix btrfs/056 to work on non-4k block sized filesystems
  2015-11-30 10:16 ` [PATCH V2 4/5] Fix btrfs/056 " Chandan Rajendra
@ 2015-12-10 17:26   ` Filipe Manana
  0 siblings, 0 replies; 11+ messages in thread
From: Filipe Manana @ 2015-12-10 17:26 UTC (permalink / raw)
  To: Chandan Rajendra; +Cc: fstests, linux-btrfs, chandan

On Mon, Nov 30, 2015 at 10:16 AM, Chandan Rajendra
<chandan@linux.vnet.ibm.com> wrote:
> This commit makes use of the new _filter_xfs_io_blocks_modified and _filter_od
> filtering functions to print information in terms of file blocks rather than
> file offset.
>
> Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>

Thanks!

> ---
>  tests/btrfs/056     |  51 ++++++++++--------
>  tests/btrfs/056.out | 152 +++++++++++++++++++++-------------------------------
>  2 files changed, 90 insertions(+), 113 deletions(-)
>
> diff --git a/tests/btrfs/056 b/tests/btrfs/056
> index 66a59b8..6dc3bfd 100755
> --- a/tests/btrfs/056
> +++ b/tests/btrfs/056
> @@ -68,33 +68,42 @@ test_btrfs_clone_fsync_log_recover()
>         MOUNT_OPTIONS="$MOUNT_OPTIONS $2"
>         _mount_flakey
>
> -       # Create a file with 4 extents and 1 hole, all with a size of 8Kb each.
> -       # The hole is in the range [16384, 24576[.
> -       $XFS_IO_PROG -s -f -c "pwrite -S 0x01 -b 8192 0 8192" \
> -                       -c "pwrite -S 0x02 -b 8192 8192 8192" \
> -                       -c "pwrite -S 0x04 -b 8192 24576 8192" \
> -                       -c "pwrite -S 0x05 -b 8192 32768 8192" \
> -               $SCRATCH_MNT/foo | _filter_xfs_io
> -
> -       # Clone destination file, 1 extent of 96kb.
> -       $XFS_IO_PROG -f -c "pwrite -S 0xff -b 98304 0 98304" -c "fsync" \
> -               $SCRATCH_MNT/bar | _filter_xfs_io
> -
> -       # Clone second half of the 2nd extent, the 8kb hole, the 3rd extent
> +       BLOCK_SIZE=$(get_block_size $SCRATCH_MNT)
> +
> +       EXTENT_SIZE=$((2 * $BLOCK_SIZE))
> +
> +       # Create a file with 4 extents and 1 hole, all with a size of
> +       # 2 blocks each.
> +       # The hole is in the block range [4, 5].
> +       $XFS_IO_PROG -s -f -c "pwrite -S 0x01 -b $EXTENT_SIZE 0 $EXTENT_SIZE" \
> +                       -c "pwrite -S 0x02 -b $EXTENT_SIZE $((2 * $BLOCK_SIZE)) $EXTENT_SIZE" \
> +                       -c "pwrite -S 0x04 -b $EXTENT_SIZE $((6 * $BLOCK_SIZE)) $EXTENT_SIZE" \
> +                       -c "pwrite -S 0x05 -b $EXTENT_SIZE $((8 * $BLOCK_SIZE)) $EXTENT_SIZE" \
> +               $SCRATCH_MNT/foo | _filter_xfs_io_blocks_modified
> +
> +       # Clone destination file, 1 extent of 24 blocks.
> +       $XFS_IO_PROG -f -c "pwrite -S 0xff -b $((24 * $BLOCK_SIZE)) 0 $((24 * $BLOCK_SIZE))" \
> +                    -c "fsync" $SCRATCH_MNT/bar | _filter_xfs_io_blocks_modified
> +
> +       # Clone second half of the 2nd extent, the 2 block hole, the 3rd extent
>         # and the first half of the 4th extent into file bar.
> -       $CLONER_PROG -s 12288 -d 0 -l 24576 $SCRATCH_MNT/foo $SCRATCH_MNT/bar
> +       $CLONER_PROG -s $((3 * $BLOCK_SIZE)) -d 0 -l $((6 * $BLOCK_SIZE)) \
> +                    $SCRATCH_MNT/foo $SCRATCH_MNT/bar
>         $XFS_IO_PROG -c "fsync" $SCRATCH_MNT/bar
>
>         # Test small files too consisting of 1 inline extent
> -       $XFS_IO_PROG -f -c "pwrite -S 0x00 -b 3500 0 3500" -c "fsync" \
> -               $SCRATCH_MNT/foo2 | _filter_xfs_io
> +       EXTENT_SIZE=$(($BLOCK_SIZE - 48))
> +       $XFS_IO_PROG -f -c "pwrite -S 0x00 -b $EXTENT_SIZE 0 $EXTENT_SIZE" -c "fsync" \
> +               $SCRATCH_MNT/foo2 | _filter_xfs_io_blocks_modified
>
> -       $XFS_IO_PROG -f -c "pwrite -S 0xcc -b 1000 0 1000" -c "fsync" \
> -               $SCRATCH_MNT/bar2 | _filter_xfs_io
> +       EXTENT_SIZE=$(($BLOCK_SIZE - 1048))
> +       $XFS_IO_PROG -f -c "pwrite -S 0xcc -b $EXTENT_SIZE 0 $EXTENT_SIZE" -c "fsync" \
> +               $SCRATCH_MNT/bar2 | _filter_xfs_io_blocks_modified
>
>         # Clone the entire foo2 file into bar2, overwriting all data in bar2
>         # and increasing its size.
> -       $CLONER_PROG -s 0 -d 0 -l 3500 $SCRATCH_MNT/foo2 $SCRATCH_MNT/bar2
> +       EXTENT_SIZE=$(($BLOCK_SIZE - 48))
> +       $CLONER_PROG -s 0 -d 0 -l $EXTENT_SIZE $SCRATCH_MNT/foo2 $SCRATCH_MNT/bar2
>         $XFS_IO_PROG -c "fsync" $SCRATCH_MNT/bar2
>
>         _flakey_drop_and_remount yes
> @@ -102,10 +111,10 @@ test_btrfs_clone_fsync_log_recover()
>         # Verify the cloned range was persisted by fsync and the log recovery
>         # code did its work well.
>         echo "Verifying file bar content"
> -       od -t x1 $SCRATCH_MNT/bar
> +       od -t x1 $SCRATCH_MNT/bar | _filter_od
>
>         echo "Verifying file bar2 content"
> -       od -t x1 $SCRATCH_MNT/bar2
> +       od -t x1 $SCRATCH_MNT/bar2 | _filter_od
>
>         _unmount_flakey
>
> diff --git a/tests/btrfs/056.out b/tests/btrfs/056.out
> index 1b77ae3..c4c6b2c 100644
> --- a/tests/btrfs/056.out
> +++ b/tests/btrfs/056.out
> @@ -1,129 +1,97 @@
>  QA output created by 056
>  Testing without the NO_HOLES feature
> -wrote 8192/8192 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 8192
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 24576
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 32768
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 98304/98304 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 3500/3500 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 1000/1000 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Blocks modified: [0 - 1]
> +Blocks modified: [2 - 3]
> +Blocks modified: [6 - 7]
> +Blocks modified: [8 - 9]
> +Blocks modified: [0 - 23]
> +Blocks modified: [0 - 0]
> +Blocks modified: [0 - 0]
>  Verifying file bar content
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0010000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0030000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +3 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0050000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +5 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0300000
> +30
>  Verifying file bar2 content
> -0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0006640 00 00 00 00 00 00 00 00 00 00 00 00
> -0006654
> +0
>  Testing without the NO_HOLES feature and compression (lzo)
> -wrote 8192/8192 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 8192
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 24576
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 32768
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 98304/98304 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 3500/3500 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 1000/1000 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Blocks modified: [0 - 1]
> +Blocks modified: [2 - 3]
> +Blocks modified: [6 - 7]
> +Blocks modified: [8 - 9]
> +Blocks modified: [0 - 23]
> +Blocks modified: [0 - 0]
> +Blocks modified: [0 - 0]
>  Verifying file bar content
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0010000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0030000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +3 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0050000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +5 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0300000
> +30
>  Verifying file bar2 content
> -0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0006640 00 00 00 00 00 00 00 00 00 00 00 00
> -0006654
> +0
>  Testing with the NO_HOLES feature enabled
> -wrote 8192/8192 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 8192
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 24576
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 32768
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 98304/98304 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 3500/3500 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 1000/1000 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Blocks modified: [0 - 1]
> +Blocks modified: [2 - 3]
> +Blocks modified: [6 - 7]
> +Blocks modified: [8 - 9]
> +Blocks modified: [0 - 23]
> +Blocks modified: [0 - 0]
> +Blocks modified: [0 - 0]
>  Verifying file bar content
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0010000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0030000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +3 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0050000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +5 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0300000
> +30
>  Verifying file bar2 content
> -0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0006640 00 00 00 00 00 00 00 00 00 00 00 00
> -0006654
> +0
>  Testing with the NO_HOLES feature enabled and compression (lzo)
> -wrote 8192/8192 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 8192
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 24576
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 8192/8192 bytes at offset 32768
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 98304/98304 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 3500/3500 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 1000/1000 bytes at offset 0
> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Blocks modified: [0 - 1]
> +Blocks modified: [2 - 3]
> +Blocks modified: [6 - 7]
> +Blocks modified: [8 - 9]
> +Blocks modified: [0 - 23]
> +Blocks modified: [0 - 0]
> +Blocks modified: [0 - 0]
>  Verifying file bar content
> -0000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
> +0 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
>  *
> -0010000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0030000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
> +3 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
>  *
> -0050000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
> +5 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
>  *
> -0060000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> +6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>  *
> -0300000
> +30
>  Verifying file bar2 content
> -0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> +0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>  *
> -0006640 00 00 00 00 00 00 00 00 00 00 00 00
> -0006654
> +0
> --
> 2.1.0
>



-- 
Filipe David Manana,

"Reasonable men adapt themselves to the world.
 Unreasonable men adapt the world to themselves.
 That's why all progress depends on unreasonable men."

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

end of thread, other threads:[~2015-12-10 17:26 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-30 10:16 [PATCH V2 0/5] Fix Btrfs tests to work on non-4k block sized fs instances Chandan Rajendra
2015-11-30 10:16 ` [PATCH V2 1/5] Filter xfs_io and od's output in units of FS block size Chandan Rajendra
2015-12-10 17:24   ` Filipe Manana
2015-11-30 10:16 ` [PATCH V2 2/5] Fix btrfs/017 to work on non-4k block sized filesystems Chandan Rajendra
2015-12-10 17:25   ` Filipe Manana
2015-11-30 10:16 ` [PATCH V2 3/5] Fix btrfs/055 " Chandan Rajendra
2015-12-10 17:25   ` Filipe Manana
2015-11-30 10:16 ` [PATCH V2 4/5] Fix btrfs/056 " Chandan Rajendra
2015-12-10 17:26   ` Filipe Manana
2015-11-30 10:17 ` [PATCH V2 5/5] Fix btrfs/096 " Chandan Rajendra
2015-12-10 17:25   ` Filipe Manana

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.