From: Kevin Wolf <kwolf@redhat.com>
To: qemu-block@nongnu.org
Cc: kwolf@redhat.com, qemu-devel@nongnu.org
Subject: [Qemu-devel] [PULL 05/14] quorum: Do cleanup in caller coroutine
Date: Mon, 9 Jan 2017 14:44:27 +0100 [thread overview]
Message-ID: <1483969476-7172-6-git-send-email-kwolf@redhat.com> (raw)
In-Reply-To: <1483969476-7172-1-git-send-email-kwolf@redhat.com>
Instead of calling quorum_aio_finalize() deeply nested in what used
to be an AIO callback, do it in the same functions that allocated the
AIOCB.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
---
block/quorum.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/block/quorum.c b/block/quorum.c
index 6a7bd91..e044010 100644
--- a/block/quorum.c
+++ b/block/quorum.c
@@ -144,9 +144,8 @@ static bool quorum_vote(QuorumAIOCB *acb);
static void quorum_aio_finalize(QuorumAIOCB *acb)
{
- acb->has_completed = true;
g_free(acb->qcrs);
- qemu_coroutine_enter_if_inactive(acb->co);
+ g_free(acb);
}
static bool quorum_sha256_compare(QuorumVoteValue *a, QuorumVoteValue *b)
@@ -238,7 +237,8 @@ static void quorum_rewrite_aio_cb(void *opaque, int ret)
return;
}
- quorum_aio_finalize(acb);
+ acb->has_completed = true;
+ qemu_coroutine_enter_if_inactive(acb->co);
}
static int read_fifo_child(QuorumAIOCB *acb);
@@ -284,7 +284,7 @@ static int quorum_fifo_aio_cb(void *opaque, int ret)
acb->vote_ret = ret;
/* FIXME: rewrite failed children if acb->children_read > 1? */
- quorum_aio_finalize(acb);
+
return ret;
}
@@ -322,7 +322,8 @@ static void quorum_aio_cb(void *opaque, int ret)
/* if no rewrite is done the code will finish right away */
if (!rewrite) {
- quorum_aio_finalize(acb);
+ acb->has_completed = true;
+ qemu_coroutine_enter_if_inactive(acb->co);
}
}
@@ -715,7 +716,8 @@ static int quorum_co_readv(BlockDriverState *bs,
} else {
ret = read_fifo_child(acb);
}
- g_free(acb);
+ quorum_aio_finalize(acb);
+
return ret;
}
@@ -757,6 +759,7 @@ static int quorum_co_writev(BlockDriverState *bs,
}
ret = acb->vote_ret;
+ quorum_aio_finalize(acb);
return ret;
}
--
1.8.3.1
next prev parent reply other threads:[~2017-01-09 13:44 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-09 13:44 [Qemu-devel] [PULL 00/14] Block layer patches Kevin Wolf
2017-01-09 13:44 ` [Qemu-devel] [PULL 01/14] qemu-img: fix in-flight count for qemu-img bench Kevin Wolf
2017-01-09 13:44 ` [Qemu-devel] [PULL 02/14] coroutine: Introduce qemu_coroutine_enter_if_inactive() Kevin Wolf
2017-01-09 13:44 ` [Qemu-devel] [PULL 03/14] quorum: Remove s from quorum_aio_get() arguments Kevin Wolf
2017-01-09 13:44 ` [Qemu-devel] [PULL 04/14] quorum: Implement .bdrv_co_readv/writev Kevin Wolf
2017-01-09 13:44 ` Kevin Wolf [this message]
2017-01-09 13:44 ` [Qemu-devel] [PULL 06/14] quorum: Inline quorum_aio_cb() Kevin Wolf
2017-01-09 13:44 ` [Qemu-devel] [PULL 07/14] quorum: Avoid bdrv_aio_writev() for rewrites Kevin Wolf
2017-01-09 13:44 ` [Qemu-devel] [PULL 08/14] quorum: Implement .bdrv_co_preadv/pwritev() Kevin Wolf
2017-01-09 13:44 ` [Qemu-devel] [PULL 09/14] quorum: Inline quorum_fifo_aio_cb() Kevin Wolf
2017-01-09 13:44 ` [Qemu-devel] [PULL 10/14] quorum: Clean up quorum_aio_get() Kevin Wolf
2017-01-09 13:44 ` [Qemu-devel] [PULL 11/14] blkdebug: Implement bdrv_co_preadv/pwritev/flush Kevin Wolf
2017-01-09 13:44 ` [Qemu-devel] [PULL 12/14] blkverify: " Kevin Wolf
2017-01-09 13:44 ` [Qemu-devel] [PULL 13/14] block: Rename raw_bsd to raw-format.c Kevin Wolf
2017-01-09 13:44 ` [Qemu-devel] [PULL 14/14] block: Rename raw-{posix, win32} to file-*.c Kevin Wolf
2017-01-09 14:32 ` Eric Blake
2017-01-09 15:30 ` [Qemu-devel] [PULL 00/14] Block layer patches Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1483969476-7172-6-git-send-email-kwolf@redhat.com \
--to=kwolf@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.