 b87ac96651
			
		
	
	
		b87ac96651
		
	
	
	
	
		
			
			Rather than open-coding two different ways to check for an unwanted negative sign, reuse the same code in both functions. That way, if we decide down the road to accept "-0" instead of rejecting it, we have fewer places to change. Also, it means we now get ERANGE instead of EINVAL for negative values in qemu_strtosz, which is reasonable for what it represents. This in turn changes the expected output of a couple of iotests. The change is not quite complete: negative fractional scaled values can trip us up. This will be fixed in a later patch addressing other issues with fractional scaled values. Signed-off-by: Eric Blake <eblake@redhat.com> Reviewed-by: Hanna Czenczek <hreitz@redhat.com> Message-Id: <20230522190441.64278-18-eblake@redhat.com>
		
			
				
	
	
		
			159 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| QA output created by 178
 | |
| == Input validation ==
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824
 | |
| qemu-img: Either --size N or one filename must be specified.
 | |
| qemu-img: --size N cannot be used together with a filename.
 | |
| qemu-img: At most one filename argument is allowed.
 | |
| qemu-img: Either --size N or one filename must be specified.
 | |
| qemu-img: --image-opts, -f, and -l require a filename argument.
 | |
| qemu-img: --image-opts, -f, and -l require a filename argument.
 | |
| qemu-img: --image-opts, -f, and -l require a filename argument.
 | |
| qemu-img: Invalid option list: ,
 | |
| qemu-img: Invalid parameter 'snapshot.foo'
 | |
| qemu-img: Failed in parsing snapshot param 'snapshot.foo=bar'
 | |
| qemu-img: --output must be used with human or json as argument.
 | |
| qemu-img: Invalid image size specified. Must be between 0 and 9223372036854775807.
 | |
| qemu-img: Unknown file format 'foo'
 | |
| 
 | |
| == Size calculation for a new file (human) ==
 | |
| 
 | |
| required size: 0
 | |
| fully allocated size: 0
 | |
| required size: 2147483648
 | |
| fully allocated size: 2147483648
 | |
| required size: 68719476736
 | |
| fully allocated size: 68719476736
 | |
| required size: 274877906944
 | |
| fully allocated size: 274877906944
 | |
| required size: 1099511627776
 | |
| fully allocated size: 1099511627776
 | |
| required size: 2251799813685248
 | |
| fully allocated size: 2251799813685248
 | |
| required size: 8070450532247928832
 | |
| fully allocated size: 8070450532247928832
 | |
| 
 | |
| == Empty raw input image (human) ==
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=0
 | |
| required size: 0
 | |
| fully allocated size: 0
 | |
| 
 | |
| converted image file size in bytes: 0
 | |
| 
 | |
| == raw input image with data (human) ==
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824
 | |
| required size: 1073741824
 | |
| fully allocated size: 1073741824
 | |
| wrote 512/512 bytes at offset 512
 | |
| 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| wrote 65536/65536 bytes at offset 65536
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| wrote 64512/64512 bytes at offset 134217728
 | |
| 63 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| required size: 1073741824
 | |
| fully allocated size: 1073741824
 | |
| 
 | |
| converted image file size in bytes: 1073741824
 | |
| 
 | |
| == raw input image and preallocation (human) ==
 | |
| 
 | |
| required size: 1073741824
 | |
| fully allocated size: 1073741824
 | |
| 
 | |
| converted image file size in bytes: 1073741824
 | |
| 
 | |
| == Fully-allocated raw input image (human) ==
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=8388608
 | |
| wrote 8388608/8388608 bytes at offset 0
 | |
| 8 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| required size: 8388608
 | |
| fully allocated size: 8388608
 | |
| 
 | |
| converted image file size in bytes: 8388608
 | |
| 
 | |
| == Size calculation for a new file (json) ==
 | |
| 
 | |
| {
 | |
|     "required": 0,
 | |
|     "fully-allocated": 0
 | |
| }
 | |
| {
 | |
|     "required": 2147483648,
 | |
|     "fully-allocated": 2147483648
 | |
| }
 | |
| {
 | |
|     "required": 68719476736,
 | |
|     "fully-allocated": 68719476736
 | |
| }
 | |
| {
 | |
|     "required": 274877906944,
 | |
|     "fully-allocated": 274877906944
 | |
| }
 | |
| {
 | |
|     "required": 1099511627776,
 | |
|     "fully-allocated": 1099511627776
 | |
| }
 | |
| {
 | |
|     "required": 2251799813685248,
 | |
|     "fully-allocated": 2251799813685248
 | |
| }
 | |
| {
 | |
|     "required": 8070450532247928832,
 | |
|     "fully-allocated": 8070450532247928832
 | |
| }
 | |
| 
 | |
| == Empty raw input image (json) ==
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=0
 | |
| {
 | |
|     "required": 0,
 | |
|     "fully-allocated": 0
 | |
| }
 | |
| 
 | |
| converted image file size in bytes: 0
 | |
| 
 | |
| == raw input image with data (json) ==
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824
 | |
| {
 | |
|     "required": 1073741824,
 | |
|     "fully-allocated": 1073741824
 | |
| }
 | |
| wrote 512/512 bytes at offset 512
 | |
| 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| wrote 65536/65536 bytes at offset 65536
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| wrote 64512/64512 bytes at offset 134217728
 | |
| 63 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| {
 | |
|     "required": 1073741824,
 | |
|     "fully-allocated": 1073741824
 | |
| }
 | |
| 
 | |
| converted image file size in bytes: 1073741824
 | |
| 
 | |
| == raw input image and preallocation (json) ==
 | |
| 
 | |
| {
 | |
|     "required": 1073741824,
 | |
|     "fully-allocated": 1073741824
 | |
| }
 | |
| 
 | |
| converted image file size in bytes: 1073741824
 | |
| 
 | |
| == Fully-allocated raw input image (json) ==
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=8388608
 | |
| wrote 8388608/8388608 bytes at offset 0
 | |
| 8 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| {
 | |
|     "required": 8388608,
 | |
|     "fully-allocated": 8388608
 | |
| }
 | |
| 
 | |
| converted image file size in bytes: 8388608
 | |
| *** done
 |