From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34111) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YWKis-0005qo-El for qemu-devel@nongnu.org; Fri, 13 Mar 2015 04:13:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YWKim-0007Dw-Ro for qemu-devel@nongnu.org; Fri, 13 Mar 2015 04:13:34 -0400 Received: from mail-wg0-x22b.google.com ([2a00:1450:400c:c00::22b]:45201) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YWKim-0007Dr-KF for qemu-devel@nongnu.org; Fri, 13 Mar 2015 04:13:28 -0400 Received: by wggx13 with SMTP id x13so21483309wgg.12 for ; Fri, 13 Mar 2015 01:13:28 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <55029C22.1070901@redhat.com> Date: Fri, 13 Mar 2015 09:13:22 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1426210723-16735-1-git-send-email-famz@redhat.com> <1426210723-16735-5-git-send-email-famz@redhat.com> In-Reply-To: <1426210723-16735-5-git-send-email-famz@redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 4/4] dma-helpers: Move reschedule_dma BH to blk's AioContext List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fam Zheng , qemu-devel@nongnu.org On 13/03/2015 02:38, Fam Zheng wrote: > That if the dbs' owner is an iothread, dma should be resumed on the right > thread. In this case it is the AioContext of the block device. > > Signed-off-by: Fam Zheng > --- > dma-helpers.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/dma-helpers.c b/dma-helpers.c > index 6918572..84f61a7 100644 > --- a/dma-helpers.c > +++ b/dma-helpers.c > @@ -95,8 +95,10 @@ static void reschedule_dma(void *opaque) > static void continue_after_map_failure(void *opaque) > { > DMAAIOCB *dbs = (DMAAIOCB *)opaque; > + AioContext *ctx; > > - dbs->bh = qemu_bh_new(reschedule_dma, dbs); > + ctx = blk_get_aio_context(dbs->blk); > + dbs->bh = aio_bh_new(ctx, reschedule_dma, dbs); > qemu_bh_schedule(dbs->bh); > } > > This looks good. However, I wonder if dma_aio_cancel should also call cpu_unregister_map_client. In this case, it's much better to just use a lock for the list (though you can still use atomics for the in-use flag). Paolo