From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49786) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XOMH2-0007LI-WF for qemu-devel@nongnu.org; Mon, 01 Sep 2014 03:43:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XOMGw-0003X7-Tn for qemu-devel@nongnu.org; Mon, 01 Sep 2014 03:43:36 -0400 Received: from mail-pd0-x229.google.com ([2607:f8b0:400e:c02::229]:34012) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XOMGw-0003Wz-Lx for qemu-devel@nongnu.org; Mon, 01 Sep 2014 03:43:30 -0400 Received: by mail-pd0-f169.google.com with SMTP id g10so5572794pdj.28 for ; Mon, 01 Sep 2014 00:43:26 -0700 (PDT) From: Liu Yuan Date: Mon, 1 Sep 2014 15:43:07 +0800 Message-Id: <1409557394-11853-2-git-send-email-namei.unix@gmail.com> In-Reply-To: <1409557394-11853-1-git-send-email-namei.unix@gmail.com> References: <1409557394-11853-1-git-send-email-namei.unix@gmail.com> Subject: [Qemu-devel] [PATCH 1/8] block/quorum: initialize qcrs.aiocb for read List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Benoit Canet , Stefan Hajnoczi This is required by quorum_aio_cancel() Cc: Eric Blake Cc: Benoit Canet Cc: Kevin Wolf Cc: Stefan Hajnoczi Signed-off-by: Liu Yuan --- block/quorum.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/block/quorum.c b/block/quorum.c index af48e8c..5866bca 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -653,8 +653,10 @@ static BlockDriverAIOCB *read_quorum_children(QuorumAIOCB *acb) } for (i = 0; i < s->num_children; i++) { - bdrv_aio_readv(s->bs[i], acb->sector_num, &acb->qcrs[i].qiov, - acb->nb_sectors, quorum_aio_cb, &acb->qcrs[i]); + acb->qcrs[i].aiocb = bdrv_aio_readv(s->bs[i], acb->sector_num, + &acb->qcrs[i].qiov, + acb->nb_sectors, quorum_aio_cb, + &acb->qcrs[i]); } return &acb->common; @@ -663,15 +665,14 @@ static BlockDriverAIOCB *read_quorum_children(QuorumAIOCB *acb) static BlockDriverAIOCB *read_fifo_child(QuorumAIOCB *acb) { BDRVQuorumState *s = acb->common.bs->opaque; - - acb->qcrs[acb->child_iter].buf = qemu_blockalign(s->bs[acb->child_iter], - acb->qiov->size); - qemu_iovec_init(&acb->qcrs[acb->child_iter].qiov, acb->qiov->niov); - qemu_iovec_clone(&acb->qcrs[acb->child_iter].qiov, acb->qiov, - acb->qcrs[acb->child_iter].buf); - bdrv_aio_readv(s->bs[acb->child_iter], acb->sector_num, - &acb->qcrs[acb->child_iter].qiov, acb->nb_sectors, - quorum_aio_cb, &acb->qcrs[acb->child_iter]); + int i = acb->child_iter; + + acb->qcrs[i].buf = qemu_blockalign(s->bs[i], acb->qiov->size); + qemu_iovec_init(&acb->qcrs[i].qiov, acb->qiov->niov); + qemu_iovec_clone(&acb->qcrs[i].qiov, acb->qiov, acb->qcrs[i].buf); + acb->qcrs[i].aiocb = bdrv_aio_readv(s->bs[i], acb->sector_num, + &acb->qcrs[i].qiov, acb->nb_sectors, + quorum_aio_cb, &acb->qcrs[i]); return &acb->common; } -- 1.9.1