On Thu, May 11, 2023 at 09:10:31PM -0500, Eric Blake wrote: > > 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. > > Signed-off-by: Eric Blake <ebl...@redhat.com> > --- > tests/unit/test-cutils.c | 7 +++---- > util/cutils.c | 8 ++------ > 2 files changed, 5 insertions(+), 10 deletions(-)
Returning ERANGE instead of EINVAL changes the expected output for iotests 49 and 178; this needs to be squashed in: diff --git i/tests/qemu-iotests/049.out w/tests/qemu-iotests/049.out index 8719c91b483..34e1b452e6e 100644 --- i/tests/qemu-iotests/049.out +++ w/tests/qemu-iotests/049.out @@ -92,13 +92,10 @@ Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off comp == 3. Invalid sizes == qemu-img create -f qcow2 TEST_DIR/t.qcow2 -- -1024 -qemu-img: Invalid image size specified. You may use k, M, G, T, P or E suffixes for -qemu-img: kilobytes, megabytes, gigabytes, terabytes, petabytes and exabytes. +qemu-img: Invalid image size specified. Must be between 0 and 9223372036854775807. qemu-img create -f qcow2 -o size=-1024 TEST_DIR/t.qcow2 -qemu-img: TEST_DIR/t.qcow2: Parameter 'size' expects a non-negative number below 2^64 -Optional suffix k, M, G, T, P or E means kilo-, mega-, giga-, tera-, peta- -and exabytes, respectively. +qemu-img: TEST_DIR/t.qcow2: Value '-1024' is out of range for parameter 'size' qemu-img create -f qcow2 TEST_DIR/t.qcow2 -- -1k qemu-img: Invalid image size specified. You may use k, M, G, T, P or E suffixes for diff --git i/tests/qemu-iotests/178.out.qcow2 w/tests/qemu-iotests/178.out.qcow2 index 0d51fe401ec..fe193fd5f4f 100644 --- i/tests/qemu-iotests/178.out.qcow2 +++ w/tests/qemu-iotests/178.out.qcow2 @@ -13,8 +13,7 @@ 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. You may use k, M, G, T, P or E suffixes for -qemu-img: kilobytes, megabytes, gigabytes, terabytes, petabytes and exabytes. +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) == diff --git i/tests/qemu-iotests/178.out.raw w/tests/qemu-iotests/178.out.raw index 116241ddef2..445e460fad9 100644 --- i/tests/qemu-iotests/178.out.raw +++ w/tests/qemu-iotests/178.out.raw @@ -13,8 +13,7 @@ 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. You may use k, M, G, T, P or E suffixes for -qemu-img: kilobytes, megabytes, gigabytes, terabytes, petabytes and exabytes. +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) == -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org