From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1L4GKT-0000F1-On for qemu-devel@nongnu.org; Sun, 23 Nov 2008 09:52:53 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1L4GKS-0000EY-77 for qemu-devel@nongnu.org; Sun, 23 Nov 2008 09:52:52 -0500 Received: from [199.232.76.173] (port=60086 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1L4GKR-0000EQ-U3 for qemu-devel@nongnu.org; Sun, 23 Nov 2008 09:52:51 -0500 Received: from mx2.redhat.com ([66.187.237.31]:51101) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1L4GKR-0004DF-Te for qemu-devel@nongnu.org; Sun, 23 Nov 2008 09:52:52 -0500 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id mANEqohA003868 for ; Sun, 23 Nov 2008 09:52:50 -0500 From: Gleb Natapov Date: Sun, 23 Nov 2008 16:53:05 +0200 Message-ID: <20081123145304.22178.27216.stgit@dhcp-1-237.tlv.redhat.com> In-Reply-To: <20081123145248.22178.36228.stgit@dhcp-1-237.tlv.redhat.com> References: <20081123145248.22178.36228.stgit@dhcp-1-237.tlv.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH 2/5] Introduce new helper function qcow_shedule_bh(). Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Use it to remove code duplications from qcow_aio_read_cb(). Signed-off-by: Gleb Natapov --- block-qcow2.c | 44 +++++++++++++++++--------------------------- 1 files changed, 17 insertions(+), 27 deletions(-) diff --git a/block-qcow2.c b/block-qcow2.c index ab19a4e..69f6414 100644 --- a/block-qcow2.c +++ b/block-qcow2.c @@ -1177,6 +1177,20 @@ static void qcow_aio_read_bh(void *opaque) qcow_aio_read_cb(opaque, 0); } +static int qcow_shedule_bh(QEMUBHFunc *cb, QCowAIOCB *acb) +{ + if (acb->bh) + return -EIO; + + acb->bh = qemu_bh_new(cb, acb); + if (!acb->bh) + return -EIO; + + qemu_bh_schedule(acb->bh); + + return 0; +} + static void qcow_aio_read_cb(void *opaque, int ret) { QCowAIOCB *acb = opaque; @@ -1232,30 +1246,14 @@ fail: if (acb->hd_aiocb == NULL) goto fail; } else { - if (acb->bh) { - ret = -EIO; - goto fail; - } - acb->bh = qemu_bh_new(qcow_aio_read_bh, acb); - if (!acb->bh) { - ret = -EIO; + if((ret = qcow_shedule_bh(qcow_aio_read_bh, acb)) < 0) goto fail; - } - qemu_bh_schedule(acb->bh); } } else { /* Note: in this case, no need to wait */ memset(acb->buf, 0, 512 * acb->n); - if (acb->bh) { - ret = -EIO; + if((ret = qcow_shedule_bh(qcow_aio_read_bh, acb)) < 0) goto fail; - } - acb->bh = qemu_bh_new(qcow_aio_read_bh, acb); - if (!acb->bh) { - ret = -EIO; - goto fail; - } - qemu_bh_schedule(acb->bh); } } else if (acb->cluster_offset & QCOW_OFLAG_COMPRESSED) { /* add AIO support for compressed blocks ? */ @@ -1263,16 +1261,8 @@ fail: goto fail; memcpy(acb->buf, s->cluster_cache + index_in_cluster * 512, 512 * acb->n); - if (acb->bh) { - ret = -EIO; + if((ret = qcow_shedule_bh(qcow_aio_read_bh, acb)) < 0) goto fail; - } - acb->bh = qemu_bh_new(qcow_aio_read_bh, acb); - if (!acb->bh) { - ret = -EIO; - goto fail; - } - qemu_bh_schedule(acb->bh); } else { if ((acb->cluster_offset & 511) != 0) { ret = -EIO;