From: Juan Quintela <quintela@redhat.com>
To: OHMURA Kei <ohmura.kei@lab.ntt.co.jp>
Cc: "kvm\@vger.kernel.org" <kvm@vger.kernel.org>,
"qemu-devel\@nongnu.org" <qemu-devel@nongnu.org>,
Avi Kivity <avi@redhat.com>,
Yoshiaki Tamura <tamura.yoshiaki@lab.ntt.co.jp>
Subject: Re: virtio_blk_load() question
Date: Thu, 18 Mar 2010 13:07:41 +0100 [thread overview]
Message-ID: <m3eijhomsy.fsf@trasno.mitica> (raw)
In-Reply-To: <4BA1F578.4040500@lab.ntt.co.jp> (OHMURA Kei's message of "Thu, 18 Mar 2010 18:42:16 +0900")
OHMURA Kei <ohmura.kei@lab.ntt.co.jp> wrote:
> Thanks for your reply.
>
>> When I ported virtio to vmstate, I was unable to get that list not empty
>> for more than I tried. It should be not empty in the case of one error
>> or similar, but I was not able to reproduce it.
>
> Actually, I wasn't able to get that condition either.
> We're having problem in loading continuously sent VM image, and were
> looking deeper into the device models. We were doubting the
> virtio_blk_load() first, but seems to be different.
>
>> I agree this change is ok/needed. Notice that my series ( [PATCH 0/9]
>> Virtio cleanups) that changes it to a QLIST and fixes it.
>
> I guess you're mentioning the following patch, and it's good to know
> that.
>
> http://www.mail-archive.com/qemu-devel@nongnu.org/msg27324.html
>
> However, although QLIST_INSERT_HEAD is used, virtio_blk_save() is
> adding requests to the tail of the list, and if we need to keep the
> order of outstading requests, shouldn't we put incoming requests to
> the tail in virtio_blk_load()?
Really, ordering doesn't matter (in this case):
see virtio-blk.c:virtio_blk_dma_restart_bh()
QLIST_FOREACH_SAFE(req, &rq_copy, next, next_req) {
QLIST_REMOVE(req, next);
virtio_blk_handle_request(req, &mrb);
}
This mean that we are just removing from the beggining and addin from
the beginnig (i.e. reversing). Adding by the beggining made it easier,
but I can change if you mean.
Notice that except if there are any errors (I was not able to trigger
it, but didnt' try too hard), that list is going to be syncked in the
qemu_aio_flush();
bdrv_flush_all();
in migrate_fd_put_ready(), so it is not trivial to hit it and probably
the difference is just theoretical.
Later, Juan.
next prev parent reply other threads:[~2010-03-18 12:07 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-18 4:30 virtio_blk_load() question OHMURA Kei
2010-03-18 7:37 ` Juan Quintela
2010-03-18 9:42 ` OHMURA Kei
2010-03-18 12:07 ` Juan Quintela [this message]
2010-03-19 2:53 ` OHMURA Kei
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=m3eijhomsy.fsf@trasno.mitica \
--to=quintela@redhat.com \
--cc=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=ohmura.kei@lab.ntt.co.jp \
--cc=qemu-devel@nongnu.org \
--cc=tamura.yoshiaki@lab.ntt.co.jp \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox