From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34973) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XONUb-0000Bo-7D for qemu-devel@nongnu.org; Mon, 01 Sep 2014 05:01:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XONUO-0002Ek-Dp for qemu-devel@nongnu.org; Mon, 01 Sep 2014 05:01:40 -0400 Received: from averel.grnet-hq.admin.grnet.gr ([195.251.29.3]:10661) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XONUO-00024U-7c for qemu-devel@nongnu.org; Mon, 01 Sep 2014 05:01:28 -0400 From: Chrysostomos Nanakos Date: Mon, 1 Sep 2014 11:58:41 +0300 Message-Id: <1409561921-4049-2-git-send-email-cnanakos@grnet.gr> In-Reply-To: <1409561921-4049-1-git-send-email-cnanakos@grnet.gr> References: <1409561921-4049-1-git-send-email-cnanakos@grnet.gr> Subject: [Qemu-devel] [PATCH v1 2/2] block/archipelago: Use QEMU atomic builtins List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, pbonzini@redhat.com, Chrysostomos Nanakos , stefanha@redhat.com Replace __sync builtins with the ones provided by QEMU for atomic operations. Signed-off-by: Chrysostomos Nanakos --- block/archipelago.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/block/archipelago.c b/block/archipelago.c index 34f72dc..fa8cd29 100644 --- a/block/archipelago.c +++ b/block/archipelago.c @@ -57,6 +57,7 @@ #include "qapi/qmp/qint.h" #include "qapi/qmp/qstring.h" #include "qapi/qmp/qjson.h" +#include "qemu/atomic.h" #include #include @@ -214,7 +215,7 @@ static void xseg_request_handler(void *state) xseg_put_request(s->xseg, req, s->srcport); - if ((__sync_add_and_fetch(&segreq->ref, -1)) == 0) { + if ((atomic_add_fetch(&segreq->ref, -1)) == 0) { if (!segreq->failed) { reqdata->aio_cb->ret = segreq->count; archipelago_finish_aiocb(reqdata); @@ -233,7 +234,7 @@ static void xseg_request_handler(void *state) segreq->count += req->serviced; xseg_put_request(s->xseg, req, s->srcport); - if ((__sync_add_and_fetch(&segreq->ref, -1)) == 0) { + if ((atomic_add_fetch(&segreq->ref, -1)) == 0) { if (!segreq->failed) { reqdata->aio_cb->ret = segreq->count; archipelago_finish_aiocb(reqdata); @@ -885,13 +886,13 @@ static int archipelago_aio_segmented_rw(BDRVArchipelagoState *s, return 0; err_exit: - __sync_add_and_fetch(&segreq->failed, 1); + atomic_add_fetch(&segreq->failed, 1); if (segments_nr == 1) { - if (__sync_add_and_fetch(&segreq->ref, -1) == 0) { + if (atomic_add_fetch(&segreq->ref, -1) == 0) { g_free(segreq); } } else { - if ((__sync_add_and_fetch(&segreq->ref, -segments_nr + i)) == 0) { + if ((atomic_add_fetch(&segreq->ref, -segments_nr + i)) == 0) { g_free(segreq); } } -- 1.7.10.4