[libvirt] [PATCH] blockjob: Fix a error checking of blockjob status in some case

John Ferlan jferlan at redhat.com
Wed Jan 31 14:56:07 UTC 2018

On 01/19/2018 09:03 AM, Jie Wang wrote:
> offset and len can also be equal to 0 on failed if blockjob return
> status:"BLOCK_JOB_COMPLETED" with error:"File descriptor in bad
> state", this bug can be reproduced easily if you perform a async
> block job on read only filesystem, so it's very worthwhile for us to
> check 'error' in this case.

Perhaps better said:

Commit id 'bc444666f' added a check if the returned data buffer had an
error, but failed to adjust the event from
to propagate an error such as "File descriptor in bad state" that may be
returned from QEMU when both @offset and @len are set to 0 such as is
the case when performing an async block job read on a read only filesystem.

If that adjustment is fine with you and anyone else that cares to read
this response, then I'll make the adjustment and push...

Reviewed-by: John Ferlan <jferlan at redhat.com>


> ---
>  src/qemu/qemu_monitor_json.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> index 5ddd855..442b218 100644
> --- a/src/qemu/qemu_monitor_json.c
> +++ b/src/qemu/qemu_monitor_json.c
> @@ -889,7 +889,7 @@ qemuMonitorJSONHandleBlockJobImpl(qemuMonitorPtr mon,
>          error = virJSONValueObjectGetString(data, "error");
>          /* Make sure the whole device has been processed */
> -        if (offset != len)
> +        if (offset != len || error)
>              event = VIR_DOMAIN_BLOCK_JOB_FAILED;
>          break;

More information about the libvir-list mailing list