All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Privoznik <mprivozn@redhat.com>
To: Eric Blake <eblake@redhat.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"libvir-list@redhat.com" <libvir-list@redhat.com>
Subject: Re: [Qemu-devel] [libvirt] should active block commit ever be allowed to show 0 total progress?
Date: Tue, 13 Jan 2015 09:56:05 +0100	[thread overview]
Message-ID: <54B4DDA5.3070907@redhat.com> (raw)
In-Reply-To: <54B44B36.6040706@redhat.com>

On 12.01.2015 23:31, Eric Blake wrote:
> I was trying to work on a libvirt bug, when I discovered the following:
>
> $ qemu-img create -f qcow2 a.qcow2 10M
> Formatting 'a.qcow2', fmt=qcow2 size=10485760 encryption=off
> cluster_size=65536 lazy_refcounts=off
> $ qemu-img create -f qcow2 \
>    -obacking_file=a.qcow2,backing_fmt=qcow2 b.qcow2
> Formatting 'b.qcow2', fmt=qcow2 size=10485760 backing_file='a.qcow2'
> backing_fmt='qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
> $ qemu-img create -f qcow2 \
>    -obacking_file=b.qcow2,backing_fmt=qcow2 c.qcow2
> Formatting 'c.qcow2', fmt=qcow2 size=10485760 backing_file='b.qcow2'
> backing_fmt='qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
> $ qemu-kvm -nodefaults -qmp stdio c.qcow2
> {"execute":"qmp_capabilities"}
> {"execute":"block-commit","arguments":{"device":"ide0-hd0","top":"c.qcow2","base":"b.qcow2"}}
>
> Note that it gives me the following event practically right away:
>
> {"timestamp": {"seconds": 1421101221, "microseconds": 47075}, "event":
> "BLOCK_JOB_READY", "data": {"device": "ide0-hd0", "len": 0, "offset": 0,
> "speed": 0, "type": "commit"}}
>
> and that a "query-block-jobs" confirms the "len":0,"offset":0 reporting.
>
> That is, because c.qcow2 has no sectors that differ from b.qcow2, the
> two files are immediately in sync.  But what is annoying is that it
> claims that 'len' and 'offset' are equal at zero, while libvirt has code
> that special cases both numbers as 0 as meaning that the job has not yet
> started.  I can fix libvirt to treat len==offset==0 as treating a job as
> 100% complete, but I'm wondering if qemu should be fixed to always
> report a non-zero length for every job that has successfully started, in
> order to reserve the case of a zero length for a job that has not yet
> determined how much needs to be done and can be treated as 0% complete.
>   That is, does qemu have a bug for making it possible to confuse libvirt
> on whether a copy or active commit job has entered the second phase in
> contrast to not knowing if the job has started yet?
>

Yep, sounds good to me. len==offset==0 should be yet another special case.

Michal

      reply	other threads:[~2015-01-13  8:56 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-12 22:31 [Qemu-devel] should active block commit ever be allowed to show 0 total progress? Eric Blake
2015-01-13  8:56 ` Michal Privoznik [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54B4DDA5.3070907@redhat.com \
    --to=mprivozn@redhat.com \
    --cc=eblake@redhat.com \
    --cc=libvir-list@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.