qemu-iotests: test 'offset' and 'size' options in raw driver
Signed-off-by: Tomáš Golembiovský <tgolembi@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
		
							parent
							
								
									2fdc70452a
								
							
						
					
					
						commit
						ccc47808fd
					
				| 
						 | 
					@ -0,0 +1,212 @@
 | 
				
			||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Test 'offset' and 'size' options of the raw driver. Make sure we can't
 | 
				
			||||||
 | 
					# (or can) read and write outside of the image size.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright (C) 2016 Red Hat, Inc.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# creator
 | 
				
			||||||
 | 
					owner=tgolembi@redhat.com
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					seq=`basename $0`
 | 
				
			||||||
 | 
					echo "QA output created by $seq"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					here=`pwd`
 | 
				
			||||||
 | 
					status=1	# failure is the default!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_cleanup()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    _cleanup_test_img
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					trap "_cleanup; exit \$status" 0 1 2 3 15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# get standard environment, filters and checks
 | 
				
			||||||
 | 
					. ./common.rc
 | 
				
			||||||
 | 
					. ./common.filter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_supported_fmt raw
 | 
				
			||||||
 | 
					_supported_proto file
 | 
				
			||||||
 | 
					_supported_os Linux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Create JSON with options
 | 
				
			||||||
 | 
					img_json() {
 | 
				
			||||||
 | 
					    echo -n 'json:{"driver":"raw", '
 | 
				
			||||||
 | 
					    echo -n "\"offset\":\"$img_offset\", "
 | 
				
			||||||
 | 
					    if [ "$img_size" -ne -1 ] ; then
 | 
				
			||||||
 | 
					        echo -n "\"size\":\"$img_size\", "
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    echo -n '"file": {'
 | 
				
			||||||
 | 
					    echo -n    '"driver":"file", '
 | 
				
			||||||
 | 
					    echo -n    "\"filename\":\"$TEST_IMG\" "
 | 
				
			||||||
 | 
					    echo -n "} }"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					do_general_test() {
 | 
				
			||||||
 | 
					    if [ "$img_size" -ge 0 ] ; then
 | 
				
			||||||
 | 
					        test_size=$img_size
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        test_size=$((size-img_offset))
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "write to image"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "write -P 0x0a 0 $test_size" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "read the image"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "read -P 0x0a 0 $test_size" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "check that offset is respected"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "read -v $((img_offset-2)) 4" $TEST_IMG | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "write before image boundary"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "write $((test_size-1)) 1" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "write across image boundary"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "write $((test_size-1)) 2" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "write at image boundary"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "write $test_size 1" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "write after image boundary"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "write $((test_size+512)) 1" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "writev before/after image boundary"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "writev $((test_size-512)) 512 512" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "read before image boundary"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "read $((test_size-1)) 1" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "read across image boundary"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "read $((test_size-1)) 2" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "read at image boundary"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "read $test_size 1" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "read after image boundary"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "read $((test_size+512)) 1" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "readv before/after image boundary"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "readv $((test_size-512)) 512 512" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "fill image with pattern"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "write -P 0x0a 0 $size" $TEST_IMG | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "write zeroes and check"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "write -z 0 512" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					    $QEMU_IO -c "read -v $((img_offset-2)) 4" $TEST_IMG | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "write zeroes across image boundary"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "write -z $((test_size-1)) 2" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "write zeroes at image boundary and check"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "write -z $((test_size-2)) 2" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					    $QEMU_IO -c "read -v $((img_offset+test_size-2)) 2" $TEST_IMG | _filter_qemu_io
 | 
				
			||||||
 | 
					    $QEMU_IO -c "read -v $((img_offset+test_size)) 2" $TEST_IMG | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "fill image with pattern"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "write -P 0x0a 0 $size" $TEST_IMG | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "discard and check"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "discard 0 512" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					    $QEMU_IO -c "read -v $((img_offset-2)) 4" $TEST_IMG | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "discard across image boundary"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "discard $((test_size-1)) 2" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "discard at image boundary and check"
 | 
				
			||||||
 | 
					    $QEMU_IO -c "discard $((test_size-2)) 2" "$(img_json)" | _filter_qemu_io
 | 
				
			||||||
 | 
					    $QEMU_IO -c "read -v $((img_offset+test_size-2)) 2" $TEST_IMG | _filter_qemu_io
 | 
				
			||||||
 | 
					    $QEMU_IO -c "read -v $((img_offset+test_size)) 2" $TEST_IMG | _filter_qemu_io
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo
 | 
				
			||||||
 | 
					echo "== test 'offset' option =="
 | 
				
			||||||
 | 
					size=4096
 | 
				
			||||||
 | 
					img_offset=512
 | 
				
			||||||
 | 
					img_size=-1
 | 
				
			||||||
 | 
					_make_test_img $size
 | 
				
			||||||
 | 
					do_general_test
 | 
				
			||||||
 | 
					_cleanup_test_img
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo
 | 
				
			||||||
 | 
					echo "== test 'offset' and 'size' options =="
 | 
				
			||||||
 | 
					size=4096
 | 
				
			||||||
 | 
					img_offset=512
 | 
				
			||||||
 | 
					img_size=2048
 | 
				
			||||||
 | 
					_make_test_img $size
 | 
				
			||||||
 | 
					do_general_test
 | 
				
			||||||
 | 
					_cleanup_test_img
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo
 | 
				
			||||||
 | 
					echo "== test misaligned 'offset' =="
 | 
				
			||||||
 | 
					size=4096
 | 
				
			||||||
 | 
					img_offset=10
 | 
				
			||||||
 | 
					img_size=2048
 | 
				
			||||||
 | 
					_make_test_img $size
 | 
				
			||||||
 | 
					do_general_test
 | 
				
			||||||
 | 
					_cleanup_test_img
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo
 | 
				
			||||||
 | 
					echo "== test reopen =="
 | 
				
			||||||
 | 
					size=4096
 | 
				
			||||||
 | 
					img_offset=512
 | 
				
			||||||
 | 
					img_size=512
 | 
				
			||||||
 | 
					_make_test_img $size
 | 
				
			||||||
 | 
					(
 | 
				
			||||||
 | 
					$QEMU_IO "$(img_json)"  <<EOT
 | 
				
			||||||
 | 
					write -P 0x0a 0 512
 | 
				
			||||||
 | 
					write -P 0x0a 511 1
 | 
				
			||||||
 | 
					write -P 0x0a 512 1
 | 
				
			||||||
 | 
					reopen -o driver=raw,offset=1536,size=1024
 | 
				
			||||||
 | 
					write -P 0x0a 0 1024
 | 
				
			||||||
 | 
					write -P 0x0a 1023 1
 | 
				
			||||||
 | 
					write -P 0x0a 1024 1
 | 
				
			||||||
 | 
					EOT
 | 
				
			||||||
 | 
					) | _filter_qemu_io
 | 
				
			||||||
 | 
					echo "checking boundaries"
 | 
				
			||||||
 | 
					$QEMU_IO -c "read -v 510 4" $TEST_IMG | _filter_qemu_io
 | 
				
			||||||
 | 
					$QEMU_IO -c "read -v 1022 4" $TEST_IMG | _filter_qemu_io
 | 
				
			||||||
 | 
					$QEMU_IO -c "read -v 1534 4" $TEST_IMG | _filter_qemu_io
 | 
				
			||||||
 | 
					$QEMU_IO -c "read -v 2558 4" $TEST_IMG | _filter_qemu_io
 | 
				
			||||||
 | 
					_cleanup_test_img
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# success, all done
 | 
				
			||||||
 | 
					echo
 | 
				
			||||||
 | 
					echo "*** done"
 | 
				
			||||||
 | 
					rm -f $seq.full
 | 
				
			||||||
 | 
					status=0
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,313 @@
 | 
				
			||||||
 | 
					QA output created by 171
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== test 'offset' option ==
 | 
				
			||||||
 | 
					Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4096
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write to image
 | 
				
			||||||
 | 
					wrote 3584/3584 bytes at offset 0
 | 
				
			||||||
 | 
					3.500 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read the image
 | 
				
			||||||
 | 
					read 3584/3584 bytes at offset 0
 | 
				
			||||||
 | 
					3.500 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check that offset is respected
 | 
				
			||||||
 | 
					000001fe:  00 00 0a 0a  ....
 | 
				
			||||||
 | 
					read 4/4 bytes at offset 510
 | 
				
			||||||
 | 
					4 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write before image boundary
 | 
				
			||||||
 | 
					wrote 1/1 bytes at offset 3583
 | 
				
			||||||
 | 
					1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write across image boundary
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write at image boundary
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write after image boundary
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					writev before/after image boundary
 | 
				
			||||||
 | 
					writev failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read before image boundary
 | 
				
			||||||
 | 
					read 1/1 bytes at offset 3583
 | 
				
			||||||
 | 
					1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read across image boundary
 | 
				
			||||||
 | 
					read failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read at image boundary
 | 
				
			||||||
 | 
					read failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read after image boundary
 | 
				
			||||||
 | 
					read failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					readv before/after image boundary
 | 
				
			||||||
 | 
					readv failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fill image with pattern
 | 
				
			||||||
 | 
					wrote 4096/4096 bytes at offset 0
 | 
				
			||||||
 | 
					4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write zeroes and check
 | 
				
			||||||
 | 
					wrote 512/512 bytes at offset 0
 | 
				
			||||||
 | 
					512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					000001fe:  0a 0a 00 00  ....
 | 
				
			||||||
 | 
					read 4/4 bytes at offset 510
 | 
				
			||||||
 | 
					4 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write zeroes across image boundary
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write zeroes at image boundary and check
 | 
				
			||||||
 | 
					wrote 2/2 bytes at offset 3582
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					00000ffe:  00 00  ..
 | 
				
			||||||
 | 
					read 2/2 bytes at offset 4094
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					read failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fill image with pattern
 | 
				
			||||||
 | 
					wrote 4096/4096 bytes at offset 0
 | 
				
			||||||
 | 
					4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					discard and check
 | 
				
			||||||
 | 
					discard 512/512 bytes at offset 0
 | 
				
			||||||
 | 
					512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					000001fe:  0a 0a 00 00  ....
 | 
				
			||||||
 | 
					read 4/4 bytes at offset 510
 | 
				
			||||||
 | 
					4 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					discard across image boundary
 | 
				
			||||||
 | 
					discard failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					discard at image boundary and check
 | 
				
			||||||
 | 
					discard 2/2 bytes at offset 3582
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					00000ffe:  00 00  ..
 | 
				
			||||||
 | 
					read 2/2 bytes at offset 4094
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					read failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== test 'offset' and 'size' options ==
 | 
				
			||||||
 | 
					Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4096
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write to image
 | 
				
			||||||
 | 
					wrote 2048/2048 bytes at offset 0
 | 
				
			||||||
 | 
					2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read the image
 | 
				
			||||||
 | 
					read 2048/2048 bytes at offset 0
 | 
				
			||||||
 | 
					2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check that offset is respected
 | 
				
			||||||
 | 
					000001fe:  00 00 0a 0a  ....
 | 
				
			||||||
 | 
					read 4/4 bytes at offset 510
 | 
				
			||||||
 | 
					4 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write before image boundary
 | 
				
			||||||
 | 
					wrote 1/1 bytes at offset 2047
 | 
				
			||||||
 | 
					1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write across image boundary
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write at image boundary
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write after image boundary
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					writev before/after image boundary
 | 
				
			||||||
 | 
					writev failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read before image boundary
 | 
				
			||||||
 | 
					read 1/1 bytes at offset 2047
 | 
				
			||||||
 | 
					1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read across image boundary
 | 
				
			||||||
 | 
					read failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read at image boundary
 | 
				
			||||||
 | 
					read failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read after image boundary
 | 
				
			||||||
 | 
					read failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					readv before/after image boundary
 | 
				
			||||||
 | 
					readv failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fill image with pattern
 | 
				
			||||||
 | 
					wrote 4096/4096 bytes at offset 0
 | 
				
			||||||
 | 
					4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write zeroes and check
 | 
				
			||||||
 | 
					wrote 512/512 bytes at offset 0
 | 
				
			||||||
 | 
					512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					000001fe:  0a 0a 00 00  ....
 | 
				
			||||||
 | 
					read 4/4 bytes at offset 510
 | 
				
			||||||
 | 
					4 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write zeroes across image boundary
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write zeroes at image boundary and check
 | 
				
			||||||
 | 
					wrote 2/2 bytes at offset 2046
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					000009fe:  00 00  ..
 | 
				
			||||||
 | 
					read 2/2 bytes at offset 2558
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					00000a00:  0a 0a  ..
 | 
				
			||||||
 | 
					read 2/2 bytes at offset 2560
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fill image with pattern
 | 
				
			||||||
 | 
					wrote 4096/4096 bytes at offset 0
 | 
				
			||||||
 | 
					4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					discard and check
 | 
				
			||||||
 | 
					discard 512/512 bytes at offset 0
 | 
				
			||||||
 | 
					512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					000001fe:  0a 0a 00 00  ....
 | 
				
			||||||
 | 
					read 4/4 bytes at offset 510
 | 
				
			||||||
 | 
					4 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					discard across image boundary
 | 
				
			||||||
 | 
					discard failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					discard at image boundary and check
 | 
				
			||||||
 | 
					discard 2/2 bytes at offset 2046
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					000009fe:  00 00  ..
 | 
				
			||||||
 | 
					read 2/2 bytes at offset 2558
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					00000a00:  0a 0a  ..
 | 
				
			||||||
 | 
					read 2/2 bytes at offset 2560
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== test misaligned 'offset' ==
 | 
				
			||||||
 | 
					Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4096
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write to image
 | 
				
			||||||
 | 
					wrote 2048/2048 bytes at offset 0
 | 
				
			||||||
 | 
					2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read the image
 | 
				
			||||||
 | 
					read 2048/2048 bytes at offset 0
 | 
				
			||||||
 | 
					2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check that offset is respected
 | 
				
			||||||
 | 
					00000008:  00 00 0a 0a  ....
 | 
				
			||||||
 | 
					read 4/4 bytes at offset 8
 | 
				
			||||||
 | 
					4 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write before image boundary
 | 
				
			||||||
 | 
					wrote 1/1 bytes at offset 2047
 | 
				
			||||||
 | 
					1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write across image boundary
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write at image boundary
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write after image boundary
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					writev before/after image boundary
 | 
				
			||||||
 | 
					writev failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read before image boundary
 | 
				
			||||||
 | 
					read 1/1 bytes at offset 2047
 | 
				
			||||||
 | 
					1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read across image boundary
 | 
				
			||||||
 | 
					read failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read at image boundary
 | 
				
			||||||
 | 
					read failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read after image boundary
 | 
				
			||||||
 | 
					read failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					readv before/after image boundary
 | 
				
			||||||
 | 
					readv failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fill image with pattern
 | 
				
			||||||
 | 
					wrote 4096/4096 bytes at offset 0
 | 
				
			||||||
 | 
					4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write zeroes and check
 | 
				
			||||||
 | 
					wrote 512/512 bytes at offset 0
 | 
				
			||||||
 | 
					512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					00000008:  0a 0a 00 00  ....
 | 
				
			||||||
 | 
					read 4/4 bytes at offset 8
 | 
				
			||||||
 | 
					4 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write zeroes across image boundary
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write zeroes at image boundary and check
 | 
				
			||||||
 | 
					wrote 2/2 bytes at offset 2046
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					00000808:  00 00  ..
 | 
				
			||||||
 | 
					read 2/2 bytes at offset 2056
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					0000080a:  0a 0a  ..
 | 
				
			||||||
 | 
					read 2/2 bytes at offset 2058
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fill image with pattern
 | 
				
			||||||
 | 
					wrote 4096/4096 bytes at offset 0
 | 
				
			||||||
 | 
					4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					discard and check
 | 
				
			||||||
 | 
					discard 512/512 bytes at offset 0
 | 
				
			||||||
 | 
					512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					00000008:  0a 0a 00 00  ....
 | 
				
			||||||
 | 
					read 4/4 bytes at offset 8
 | 
				
			||||||
 | 
					4 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					discard across image boundary
 | 
				
			||||||
 | 
					discard failed: Input/output error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					discard at image boundary and check
 | 
				
			||||||
 | 
					discard 2/2 bytes at offset 2046
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					00000808:  00 00  ..
 | 
				
			||||||
 | 
					read 2/2 bytes at offset 2056
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					0000080a:  0a 0a  ..
 | 
				
			||||||
 | 
					read 2/2 bytes at offset 2058
 | 
				
			||||||
 | 
					2 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== test reopen ==
 | 
				
			||||||
 | 
					Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4096
 | 
				
			||||||
 | 
					wrote 512/512 bytes at offset 0
 | 
				
			||||||
 | 
					512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					wrote 1/1 bytes at offset 511
 | 
				
			||||||
 | 
					1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					wrote 1024/1024 bytes at offset 0
 | 
				
			||||||
 | 
					1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					wrote 1/1 bytes at offset 1023
 | 
				
			||||||
 | 
					1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					write failed: Input/output error
 | 
				
			||||||
 | 
					checking boundaries
 | 
				
			||||||
 | 
					000001fe:  00 00 0a 0a  ....
 | 
				
			||||||
 | 
					read 4/4 bytes at offset 510
 | 
				
			||||||
 | 
					4 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					000003fe:  0a 0a 00 00  ....
 | 
				
			||||||
 | 
					read 4/4 bytes at offset 1022
 | 
				
			||||||
 | 
					4 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					000005fe:  00 00 0a 0a  ....
 | 
				
			||||||
 | 
					read 4/4 bytes at offset 1534
 | 
				
			||||||
 | 
					4 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					000009fe:  0a 0a 00 00  ....
 | 
				
			||||||
 | 
					read 4/4 bytes at offset 2558
 | 
				
			||||||
 | 
					4 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** done
 | 
				
			||||||
| 
						 | 
					@ -163,4 +163,5 @@
 | 
				
			||||||
160 rw auto quick
 | 
					160 rw auto quick
 | 
				
			||||||
162 auto quick
 | 
					162 auto quick
 | 
				
			||||||
170 rw auto quick
 | 
					170 rw auto quick
 | 
				
			||||||
 | 
					171 rw auto quick
 | 
				
			||||||
172 auto
 | 
					172 auto
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue