All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Ming Lei <ming.lei@canonical.com>,
	qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>,
	Kevin Wolf <kwolf@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v7 0/3] linux-aio: fix batch submission
Date: Wed, 10 Dec 2014 14:11:37 +0100	[thread overview]
Message-ID: <54884689.7040209@redhat.com> (raw)
In-Reply-To: <1417424656-29714-1-git-send-email-ming.lei@canonical.com>



On 01/12/2014 10:04, Ming Lei wrote:
> The 1st patch fixes batch submission.
> 
> The 2nd one fixes -EAGAIN for non-batch case.
> 
> The 3rd one is a cleanup.
> 
> This patchset is splitted from previous patchset(dataplane: optimization
> and multi virtqueue support), as suggested by Stefan.

I think this series needs a rewrite.  Instead of removing 'node' from
'struct qemu_laiocb', each LaioQueue should actually have a list (or
SIMPLEQ) of pending 'struct qemu_laiocb'.

Every time you do an io_submit, you copy from the laiocb queue to the
iocbs array.  If it returns N, the first N elements are removed from the
list.  There is no need to do a memmove, the iocbs will be populated
again on the next io_submit.  If io_submit fails with anything but
EAGAIN, just abort().  It should never happen.

Every time you get a request, and the list was empty, you do an io_submit.

Every time you get a bdrv_unplug and the nesting level was 1, you do an
io_submit.

Every time you get a completion, if the pending queue is not empty, you
do an io_submit.

It should be _that_ simple.

Paolo

      parent reply	other threads:[~2014-12-10 13:12 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-01  9:04 [Qemu-devel] [PATCH v7 0/3] linux-aio: fix batch submission Ming Lei
2014-12-01  9:04 ` [Qemu-devel] [PATCH v7 1/3] linux-aio: fix submit aio as a batch Ming Lei
2014-12-01  9:04 ` [Qemu-devel] [PATCH v7 2/3] linux-aio: handling -EAGAIN for !s->io_q.plugged case Ming Lei
2014-12-01  9:04 ` [Qemu-devel] [PATCH v7 3/3] linux-aio: remove 'node' from 'struct qemu_laiocb' Ming Lei
2014-12-10 13:11 ` Paolo Bonzini [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=54884689.7040209@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=ming.lei@canonical.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /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.