From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:35115) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rlk5H-0004fM-Hj for qemu-devel@nongnu.org; Fri, 13 Jan 2012 11:34:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Rlk5B-0007B1-Gz for qemu-devel@nongnu.org; Fri, 13 Jan 2012 11:34:31 -0500 Received: from mail-yx0-f173.google.com ([209.85.213.173]:33564) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rlk5B-00079B-9s for qemu-devel@nongnu.org; Fri, 13 Jan 2012 11:34:25 -0500 Received: by mail-yx0-f173.google.com with SMTP id l8so376293yen.4 for ; Fri, 13 Jan 2012 08:34:25 -0800 (PST) Sender: Paolo Bonzini From: Paolo Bonzini Date: Fri, 13 Jan 2012 17:34:05 +0100 Message-Id: <1326472445-25966-6-git-send-email-pbonzini@redhat.com> In-Reply-To: <1326472445-25966-1-git-send-email-pbonzini@redhat.com> References: <1326472445-25966-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH v2 5/5] block: use QSLIST for the AIO free list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org QSLIST is equivalent to an open-coded free list, use it. Signed-off-by: Paolo Bonzini --- block.c | 9 ++++----- block_int.h | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/block.c b/block.c index 3f072f6..acb54b1 100644 --- a/block.c +++ b/block.c @@ -3242,9 +3242,9 @@ void *qemu_aio_get(AIOPool *pool, BlockDriverState *bs, { BlockDriverAIOCB *acb; - if (pool->free_aiocb) { - acb = pool->free_aiocb; - pool->free_aiocb = acb->next; + if (!QSLIST_EMPTY(pool->free_aiocb)) { + acb = QSLIST_FIRST(pool->free_aiocb); + QSLIST_REMOVE_HEAD(pool->free_aiocb, next); } else { acb = g_malloc0(pool->aiocb_size); acb->pool = pool; @@ -3259,8 +3259,7 @@ void qemu_aio_release(void *p) { BlockDriverAIOCB *acb = (BlockDriverAIOCB *)p; AIOPool *pool = acb->pool; - acb->next = pool->free_aiocb; - pool->free_aiocb = acb; + QSLIST_INSERT_HEAD(pool->free_aiocb, acb, next); } /**************************************************************/ diff --git a/block_int.h b/block_int.h index 311bd2a..c592e54 100644 --- a/block_int.h +++ b/block_int.h @@ -56,7 +56,7 @@ typedef struct BdrvTrackedRequest BdrvTrackedRequest; typedef struct AIOPool { void (*cancel)(BlockDriverAIOCB *acb); int aiocb_size; - BlockDriverAIOCB *free_aiocb; + QSLIST_HEAD(, BlockDriverAIOCB) *free_aiocb; } AIOPool; typedef struct BlockIOLimit { @@ -268,7 +268,7 @@ struct BlockDriverAIOCB { BlockDriverState *bs; BlockDriverCompletionFunc *cb; void *opaque; - BlockDriverAIOCB *next; + QSLIST_ENTRY(BlockDriverAIOCB) next; }; void get_tmp_filename(char *filename, int size); -- 1.7.7.1