From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55643) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X2FOb-00048s-5v for qemu-devel@nongnu.org; Wed, 02 Jul 2014 03:56:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X2FOS-0000ZQ-3j for qemu-devel@nongnu.org; Wed, 02 Jul 2014 03:56:01 -0400 Received: from mail-qc0-x235.google.com ([2607:f8b0:400d:c01::235]:44720) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X2FOR-0000ZK-RN for qemu-devel@nongnu.org; Wed, 02 Jul 2014 03:55:52 -0400 Received: by mail-qc0-f181.google.com with SMTP id x13so9581285qcv.12 for ; Wed, 02 Jul 2014 00:55:51 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <53B3BB02.9090903@redhat.com> Date: Wed, 02 Jul 2014 09:55:46 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1403889855-5740-1-git-send-email-armbru@redhat.com> <1403889855-5740-4-git-send-email-armbru@redhat.com> <53B2EC11.70802@redhat.com> In-Reply-To: <53B2EC11.70802@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 2.1 3/3] docs/qmp: Fix documentation of BLOCK_JOB_READY to match code List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake , Markus Armbruster , qemu-devel@nongnu.org Cc: kwolf@redhat.com, wenchaoqemu@gmail.com, stefanha@redhat.com, lcapitulino@redhat.com Il 01/07/2014 19:12, Eric Blake ha scritto: > On 06/27/2014 11:24 AM, Markus Armbruster wrote: >> Signed-off-by: Markus Armbruster >> --- >> docs/qmp/qmp-events.txt | 12 ++++++++++-- >> 1 file changed, 10 insertions(+), 2 deletions(-) >> >> diff --git a/docs/qmp/qmp-events.txt b/docs/qmp/qmp-events.txt >> index 22fea58..44be891 100644 >> --- a/docs/qmp/qmp-events.txt >> +++ b/docs/qmp/qmp-events.txt >> @@ -157,12 +157,20 @@ Emitted when a block job is ready to complete. >> >> Data: >> >> -- "device": device name (json-string) >> +- "type": Job type (json-string; "stream" for image streaming >> + "commit" for block commit) >> +- "device": Device name (json-string) >> +- "len": Maximum progress value (json-int) >> +- "offset": Current progress value (json-int) >> + On success this is equal to len. >> + On failure this is less than len. >> +- "speed": Rate limit, bytes per second (json-int) >> > > Design question - if BLOCK_JOB_READY reports failure (that is, offset < > len), are we still guaranteed to get a BLOCK_JOB_COMPLETED that also > reports failure, or does 'query-blockjobs' completely forget about the > job? If the job is completely lost, what recourse does management have > to learn about the failure (that is, if libvirtd restarts, how will it > learn whether a previously running job was aborted due to an error, if > it missed the event)? If you use rerror=stop/werror=stop you do have the behavior you request. The job will not abort, it will be paused and libvirt will be able to see the error. In fact, that was the rationale for adding rerror=stop/werror=stop to streaming (where you can just restart a failed job and only have to do minimal extra work, unlike mirror and commit). There may be a couple of holes in the logic (for example a failure in bdrv_change_backing_file), but they can be plugged if necessary. Paolo