The error message we had didn't have a hint about "-U" when locking the
image failed, which is not friendly. Also it is imaginable that the
reaction to that error by the user would be a retry with '-U'.
So the reason we require "-U" for "qemu-img info" if the image is used
is to raise the awareness about what could be wrong. A warning would do
just fine, especially since it is a little more informative.
The test case reference output is updated accordingly.
Signed-off-by: Fam Zheng <famz@redhat.com>
---
qemu-img.c | 14 ++++++++++++++
tests/qemu-iotests/153.out | 3 +--
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/qemu-img.c b/qemu-img.c
index 7d3171c20c..9684937425 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -2605,6 +2605,20 @@ static int img_info(int argc, char **argv)
list = collect_image_info_list(image_opts, filename, fmt, chain,
force_share, &local_err);
+ if (!list && !force_share) {
+ Error *local_err2 = NULL;
+ list = collect_image_info_list(image_opts, filename, fmt, chain,
+ true, &local_err2);
+ if (list) {
+ error_report("WARNING: --force-share (-U) is not used but it "
+ "seems the image is attached to a running guest; "
+ "the information may be inaccurate if it is being "
+ "updated.");
+ error_free(local_err);
+ } else {
+ error_free(local_err2);
+ }
+ }
if (!list) {
error_reportf_err(local_err, "Could not open '%s': ", filename);
return 1;
diff --git a/tests/qemu-iotests/153.out b/tests/qemu-iotests/153.out
index 5b917b177c..4de35184ba 100644
--- a/tests/qemu-iotests/153.out
+++ b/tests/qemu-iotests/153.out
@@ -41,8 +41,7 @@ Is another process using the image?
no file open, try 'help open'
_qemu_img_wrapper info TEST_DIR/t.qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
-Is another process using the image?
+qemu-img: WARNING: --force-share (-U) is not used but it seems the image is attached to a running guest; the information may be inaccurate if it is being updated.
_qemu_img_wrapper check TEST_DIR/t.qcow2
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
--
2.14.3
On 01/05/2018 12:55 AM, Fam Zheng wrote:
> The error message we had didn't have a hint about "-U" when locking the
> image failed, which is not friendly. Also it is imaginable that the
> reaction to that error by the user would be a retry with '-U'.
>
> So the reason we require "-U" for "qemu-img info" if the image is used
> is to raise the awareness about what could be wrong. A warning would do
> just fine, especially since it is a little more informative.
>
> The test case reference output is updated accordingly.
>
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
> qemu-img.c | 14 ++++++++++++++
> tests/qemu-iotests/153.out | 3 +--
> 2 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/qemu-img.c b/qemu-img.c
> index 7d3171c20c..9684937425 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -2605,6 +2605,20 @@ static int img_info(int argc, char **argv)
>
> list = collect_image_info_list(image_opts, filename, fmt, chain,
> force_share, &local_err);
> + if (!list && !force_share) {
> + Error *local_err2 = NULL;
> + list = collect_image_info_list(image_opts, filename, fmt, chain,
> + true, &local_err2);
> + if (list) {
> + error_report("WARNING: --force-share (-U) is not used but it "
We have warn_report() for use in this situation (in which case, you do
not want the leading "WARNING:" in your message).
> + "seems the image is attached to a running guest; "
> + "the information may be inaccurate if it is being "
> + "updated.");
For consistency, I'd prefer no trailing dot.
> + error_free(local_err);
> + } else {
> + error_free(local_err2);
> + }
> + }
> if (!list) {
> error_reportf_err(local_err, "Could not open '%s': ", filename);
> return 1;
> diff --git a/tests/qemu-iotests/153.out b/tests/qemu-iotests/153.out
> index 5b917b177c..4de35184ba 100644
> --- a/tests/qemu-iotests/153.out
> +++ b/tests/qemu-iotests/153.out
> @@ -41,8 +41,7 @@ Is another process using the image?
> no file open, try 'help open'
>
> _qemu_img_wrapper info TEST_DIR/t.qcow2
> -qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
> -Is another process using the image?
> +qemu-img: WARNING: --force-share (-U) is not used but it seems the image is attached to a running guest; the information may be inaccurate if it is being updated.
and those changes tweak this line.
But the idea makes sense, so with the changes,
Reviewed-by: Eric Blake <eblake@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
© 2016 - 2025 Red Hat, Inc.