qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>
Subject: [Qemu-devel] [PULL 01/23] coroutine: simplify co_aio_sleep_ns() prototype
Date: Mon, 18 Dec 2017 14:35:08 +0000	[thread overview]
Message-ID: <20171218143530.12082-2-stefanha@redhat.com> (raw)
In-Reply-To: <20171218143530.12082-1-stefanha@redhat.com>

The AioContext pointer argument to co_aio_sleep_ns() is only used for
the sleep timer.  It does not affect where the caller coroutine is
resumed.

Due to changes to coroutine and AIO APIs it is now possible to drop the
AioContext pointer argument.  This is safe to do since no caller has
specific requirements for which AioContext the timer must run in.

This patch drops the AioContext pointer argument and renames the
function to simplify the API.

Reported-by: Paolo Bonzini <pbonzini@redhat.com>
Reported-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-id: 20171109102652.6360-1-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 include/qemu/coroutine.h    | 6 +-----
 block/null.c                | 3 +--
 block/sheepdog.c            | 3 +--
 util/qemu-coroutine-sleep.c | 4 ++--
 4 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/include/qemu/coroutine.h b/include/qemu/coroutine.h
index 9aff9a735e..ce2eb73670 100644
--- a/include/qemu/coroutine.h
+++ b/include/qemu/coroutine.h
@@ -261,12 +261,8 @@ void qemu_co_rwlock_unlock(CoRwlock *lock);
 
 /**
  * Yield the coroutine for a given duration
- *
- * Behaves similarly to co_sleep_ns(), but the sleeping coroutine will be
- * resumed when using aio_poll().
  */
-void coroutine_fn co_aio_sleep_ns(AioContext *ctx, QEMUClockType type,
-                                  int64_t ns);
+void coroutine_fn qemu_co_sleep_ns(QEMUClockType type, int64_t ns);
 
 /**
  * Yield until a file descriptor becomes readable
diff --git a/block/null.c b/block/null.c
index dd9c13f9ba..0cdabaa440 100644
--- a/block/null.c
+++ b/block/null.c
@@ -110,8 +110,7 @@ static coroutine_fn int null_co_common(BlockDriverState *bs)
     BDRVNullState *s = bs->opaque;
 
     if (s->latency_ns) {
-        co_aio_sleep_ns(bdrv_get_aio_context(bs), QEMU_CLOCK_REALTIME,
-                        s->latency_ns);
+        qemu_co_sleep_ns(QEMU_CLOCK_REALTIME, s->latency_ns);
     }
     return 0;
 }
diff --git a/block/sheepdog.c b/block/sheepdog.c
index 696a71442a..a1edb992ff 100644
--- a/block/sheepdog.c
+++ b/block/sheepdog.c
@@ -776,8 +776,7 @@ static coroutine_fn void reconnect_to_sdog(void *opaque)
         if (s->fd < 0) {
             DPRINTF("Wait for connection to be established\n");
             error_report_err(local_err);
-            co_aio_sleep_ns(bdrv_get_aio_context(s->bs), QEMU_CLOCK_REALTIME,
-                            1000000000ULL);
+            qemu_co_sleep_ns(QEMU_CLOCK_REALTIME, 1000000000ULL);
         }
     };
 
diff --git a/util/qemu-coroutine-sleep.c b/util/qemu-coroutine-sleep.c
index 254349cdbb..afb678fbe5 100644
--- a/util/qemu-coroutine-sleep.c
+++ b/util/qemu-coroutine-sleep.c
@@ -31,9 +31,9 @@ static void co_sleep_cb(void *opaque)
     aio_co_wake(sleep_cb->co);
 }
 
-void coroutine_fn co_aio_sleep_ns(AioContext *ctx, QEMUClockType type,
-                                  int64_t ns)
+void coroutine_fn qemu_co_sleep_ns(QEMUClockType type, int64_t ns)
 {
+    AioContext *ctx = qemu_get_current_aio_context();
     CoSleepCB sleep_cb = {
         .co = qemu_coroutine_self(),
     };
-- 
2.14.3

  reply	other threads:[~2017-12-18 14:36 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-18 14:35 [Qemu-devel] [PULL 00/23] Block patches Stefan Hajnoczi
2017-12-18 14:35 ` Stefan Hajnoczi [this message]
2017-12-18 14:35 ` [Qemu-devel] [PULL 02/23] hw/block/nvme: Convert to realize Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 03/23] hw/block: Fix the return type Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 04/23] hw/block: Use errp directly rather than local_err Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 05/23] dev-storage: Fix the unusual function name Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 06/23] qdev: drop unused #include "sysemu/iothread.h" Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 07/23] blockdev: hold AioContext for bdrv_unref() in external_snapshot_clean() Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 08/23] block: don't keep AioContext acquired after external_snapshot_prepare() Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 09/23] block: don't keep AioContext acquired after drive_backup_prepare() Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 10/23] block: don't keep AioContext acquired after blockdev_backup_prepare() Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 11/23] block: don't keep AioContext acquired after internal_snapshot_prepare() Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 12/23] block: drop unused BlockDirtyBitmapState->aio_context field Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 13/23] iothread: add iothread_by_id() API Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 14/23] blockdev: add x-blockdev-set-iothread testing command Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 15/23] qemu-iotests: add 202 external snapshots IOThread test Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 16/23] virtio-blk: make queue size configurable Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 17/23] virtio-blk: reject configs with logical block size > physical block size Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 18/23] block: avoid recursive AioContext acquire in bdrv_inactivate_all() Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 19/23] docs: mark nested AioContext locking as a legacy API Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 20/23] blockdev: add x-blockdev-set-iothread force boolean Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 21/23] iotests: add VM.add_object() Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 22/23] iothread: fix iothread_stop() race condition Stefan Hajnoczi
2017-12-18 14:35 ` [Qemu-devel] [PULL 23/23] qemu-iotests: add 203 savevm with IOThreads test Stefan Hajnoczi
2017-12-19  0:15 ` [Qemu-devel] [PULL 00/23] Block patches Peter Maydell
2017-12-19  9:15   ` Stefan Hajnoczi

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=20171218143530.12082-2-stefanha@redhat.com \
    --to=stefanha@redhat.com \
    --cc=peter.maydell@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).