From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1L7bXT-0005jv-6b for qemu-devel@nongnu.org; Tue, 02 Dec 2008 15:08:07 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1L7bXS-0005jT-CZ for qemu-devel@nongnu.org; Tue, 02 Dec 2008 15:08:06 -0500 Received: from [199.232.76.173] (port=38658 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1L7bXS-0005jM-8L for qemu-devel@nongnu.org; Tue, 02 Dec 2008 15:08:06 -0500 Received: from savannah.gnu.org ([199.232.41.3]:39229 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1L7bXR-0003wu-TE for qemu-devel@nongnu.org; Tue, 02 Dec 2008 15:08:06 -0500 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1L7bXR-0003Fu-B0 for qemu-devel@nongnu.org; Tue, 02 Dec 2008 20:08:05 +0000 Received: from aliguori by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1L7bXR-0003Ff-2Z for qemu-devel@nongnu.org; Tue, 02 Dec 2008 20:08:05 +0000 MIME-Version: 1.0 Errors-To: aliguori Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Anthony Liguori Message-Id: Date: Tue, 02 Dec 2008 20:08:05 +0000 Subject: [Qemu-devel] [5858] Introduce new helper function qcow_shedule_bh() (Gleb Natapov) 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 Revision: 5858 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5858 Author: aliguori Date: 2008-12-02 20:08:04 +0000 (Tue, 02 Dec 2008) Log Message: ----------- Introduce new helper function qcow_shedule_bh() (Gleb Natapov) Use it to remove code duplications from qcow_aio_read_cb(). Signed-off-by: Gleb Natapov Signed-off-by: Anthony Liguori Modified Paths: -------------- trunk/block-qcow2.c Modified: trunk/block-qcow2.c =================================================================== --- trunk/block-qcow2.c 2008-12-02 20:06:51 UTC (rev 5857) +++ trunk/block-qcow2.c 2008-12-02 20:08:04 UTC (rev 5858) @@ -1177,6 +1177,20 @@ qcow_aio_read_cb(opaque, 0); } +static int qcow_schedule_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,16 @@ if (acb->hd_aiocb == NULL) goto fail; } else { - if (acb->bh) { - ret = -EIO; + ret = qcow_schedule_bh(qcow_aio_read_bh, acb); + if (ret < 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 { /* Note: in this case, no need to wait */ memset(acb->buf, 0, 512 * acb->n); - if (acb->bh) { - ret = -EIO; + ret = qcow_schedule_bh(qcow_aio_read_bh, acb); + if (ret < 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 +1263,9 @@ goto fail; memcpy(acb->buf, s->cluster_cache + index_in_cluster * 512, 512 * acb->n); - if (acb->bh) { - ret = -EIO; + ret = qcow_schedule_bh(qcow_aio_read_bh, acb); + if (ret < 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;