All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 0/7] Block patches
@ 2019-03-08 16:53 Stefan Hajnoczi
  2019-03-08 16:53 ` [Qemu-devel] [PULL 1/7] MAINTAINERS: add missing support status fields Stefan Hajnoczi
                   ` (7 more replies)
  0 siblings, 8 replies; 28+ messages in thread
From: Stefan Hajnoczi @ 2019-03-08 16:53 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Max Reitz, Michael S. Tsirkin, Kevin Wolf,
	qemu-block, Stefan Hajnoczi

The following changes since commit 6cb4f6db4f4367faa33da85b15f75bbbd2bed2a6:

  Merge remote-tracking branch 'remotes/cleber/tags/python-next-pull-request' into staging (2019-03-07 16:16:02 +0000)

are available in the Git repository at:

  git://github.com/stefanha/qemu.git tags/block-pull-request

for you to fetch changes up to 6ca206204fa773c8626d59caf2a5676d6cc35f52:

  iothread: document about why we need explicit aio_poll() (2019-03-08 10:20:57 +0000)

----------------------------------------------------------------
Pull request

----------------------------------------------------------------

Anastasiia Rusakova (1):
  hw/block/virtio-blk: Clean req->dev repetitions

Peter Xu (5):
  iothread: replace init_done_cond with a semaphore
  iothread: create the gcontext unconditionally
  iothread: create main loop unconditionally
  iothread: push gcontext earlier in the thread_fn
  iothread: document about why we need explicit aio_poll()

Stefan Hajnoczi (1):
  MAINTAINERS: add missing support status fields

 MAINTAINERS               |  3 ++
 include/sysemu/iothread.h |  5 +--
 hw/block/virtio-blk.c     | 16 ++++---
 iothread.c                | 90 +++++++++++++++++++--------------------
 4 files changed, 57 insertions(+), 57 deletions(-)

-- 
2.20.1

^ permalink raw reply	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 1/7] MAINTAINERS: add missing support status fields
  2019-03-08 16:53 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi
@ 2019-03-08 16:53 ` Stefan Hajnoczi
  2019-03-08 16:53 ` [Qemu-devel] [PULL 2/7] hw/block/virtio-blk: Clean req->dev repetitions Stefan Hajnoczi
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 28+ messages in thread
From: Stefan Hajnoczi @ 2019-03-08 16:53 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Max Reitz, Michael S. Tsirkin, Kevin Wolf,
	qemu-block, Stefan Hajnoczi, Alex Bennée, Thomas Huth,
	Philippe Mathieu-Daudé

This patch adds the "S:" line for areas of the codebase that currently
lack a support status field.

Note that there are a few more areas that are more abstract and do not
correspond to a specific set of files.  They have not been modified.

Cc: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20190301163518.20702-1-stefanha@redhat.com
Message-Id: <20190301163518.20702-1-stefanha@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 MAINTAINERS | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 074ad46d47..1ed8cf7ee7 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -338,6 +338,7 @@ F: include/hw/tricore/
 
 Multiarch Linux User Tests
 M: Alex Bennée <alex.bennee@linaro.org>
+S: Maintained
 F: tests/tcg/multiarch/
 
 Guest CPU Cores (KVM):
@@ -2094,6 +2095,7 @@ F: qemu.sasl
 Coroutines
 M: Stefan Hajnoczi <stefanha@redhat.com>
 M: Kevin Wolf <kwolf@redhat.com>
+S: Maintained
 F: util/*coroutine*
 F: include/qemu/coroutine*
 F: tests/test-coroutine.c
@@ -2540,6 +2542,7 @@ F: .gitlab-ci.yml
 Guest Test Compilation Support
 M: Alex Bennée <alex.bennee@linaro.org>
 R: Philippe Mathieu-Daudé <f4bug@amsat.org>
+S: Maintained
 F: tests/tcg/Makefile
 F: tests/tcg/Makefile.include
 L: qemu-devel@nongnu.org
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 2/7] hw/block/virtio-blk: Clean req->dev repetitions
  2019-03-08 16:53 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi
  2019-03-08 16:53 ` [Qemu-devel] [PULL 1/7] MAINTAINERS: add missing support status fields Stefan Hajnoczi
@ 2019-03-08 16:53 ` Stefan Hajnoczi
  2019-03-08 16:53 ` [Qemu-devel] [PULL 3/7] iothread: replace init_done_cond with a semaphore Stefan Hajnoczi
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 28+ messages in thread
From: Stefan Hajnoczi @ 2019-03-08 16:53 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Max Reitz, Michael S. Tsirkin, Kevin Wolf,
	qemu-block, Stefan Hajnoczi, Anastasiia Rusakova

From: Anastasiia Rusakova <arusakova917@gmail.com>

Some functions sometimes uses req->dev even though a local variable
VirtIOBlock* s = req->dev has already been defined.
Updated places to use s everywhere in the file.

Signed-off-by: Anastasiia Rusakova <arusakova917@gmail.com>
Message-id: 20190307161925.4158-1-rusakova.nastasia@icloud.com
Message-Id: <20190307161925.4158-1-rusakova.nastasia@icloud.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 hw/block/virtio-blk.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index 0cc3c590b9..06e57a4d39 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -127,7 +127,7 @@ static void virtio_blk_rw_complete(void *opaque, int ret)
         }
 
         if (ret) {
-            int p = virtio_ldl_p(VIRTIO_DEVICE(req->dev), &req->out.type);
+            int p = virtio_ldl_p(VIRTIO_DEVICE(s), &req->out.type);
             bool is_read = !(p & VIRTIO_BLK_T_OUT);
             /* Note that memory may be dirtied on read failure.  If the
              * virtio request is not completed here, as is the case for
@@ -143,7 +143,7 @@ static void virtio_blk_rw_complete(void *opaque, int ret)
         }
 
         virtio_blk_req_complete(req, VIRTIO_BLK_S_OK);
-        block_acct_done(blk_get_stats(req->dev->blk), &req->acct);
+        block_acct_done(blk_get_stats(s->blk), &req->acct);
         virtio_blk_free_request(req);
     }
     aio_context_release(blk_get_aio_context(s->conf.conf.blk));
@@ -260,9 +260,9 @@ static int virtio_blk_handle_scsi_req(VirtIOBlockReq *req)
 {
     int status = VIRTIO_BLK_S_OK;
     struct virtio_scsi_inhdr *scsi = NULL;
-    VirtIODevice *vdev = VIRTIO_DEVICE(req->dev);
-    VirtQueueElement *elem = &req->elem;
     VirtIOBlock *blk = req->dev;
+    VirtIODevice *vdev = VIRTIO_DEVICE(blk);
+    VirtQueueElement *elem = &req->elem;
 
 #ifdef __linux__
     int i;
@@ -492,16 +492,18 @@ static void virtio_blk_submit_multireq(BlockBackend *blk, MultiReqBuffer *mrb)
 
 static void virtio_blk_handle_flush(VirtIOBlockReq *req, MultiReqBuffer *mrb)
 {
-    block_acct_start(blk_get_stats(req->dev->blk), &req->acct, 0,
+    VirtIOBlock *s = req->dev;
+
+    block_acct_start(blk_get_stats(s->blk), &req->acct, 0,
                      BLOCK_ACCT_FLUSH);
 
     /*
      * Make sure all outstanding writes are posted to the backing device.
      */
     if (mrb->is_write && mrb->num_reqs > 0) {
-        virtio_blk_submit_multireq(req->dev->blk, mrb);
+        virtio_blk_submit_multireq(s->blk, mrb);
     }
-    blk_aio_flush(req->dev->blk, virtio_blk_flush_complete, req);
+    blk_aio_flush(s->blk, virtio_blk_flush_complete, req);
 }
 
 static bool virtio_blk_sect_range_ok(VirtIOBlock *dev,
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 3/7] iothread: replace init_done_cond with a semaphore
  2019-03-08 16:53 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi
  2019-03-08 16:53 ` [Qemu-devel] [PULL 1/7] MAINTAINERS: add missing support status fields Stefan Hajnoczi
  2019-03-08 16:53 ` [Qemu-devel] [PULL 2/7] hw/block/virtio-blk: Clean req->dev repetitions Stefan Hajnoczi
@ 2019-03-08 16:53 ` Stefan Hajnoczi
  2019-03-08 16:53 ` [Qemu-devel] [PULL 4/7] iothread: create the gcontext unconditionally Stefan Hajnoczi
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 28+ messages in thread
From: Stefan Hajnoczi @ 2019-03-08 16:53 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Max Reitz, Michael S. Tsirkin, Kevin Wolf,
	qemu-block, Stefan Hajnoczi, Peter Xu

From: Peter Xu <peterx@redhat.com>

Only sending an init-done message using lock+cond seems an overkill to
me.  Replacing it with a simpler semaphore.

Meanwhile, init the semaphore unconditionally, then we can destroy it
unconditionally too in finalize which seems cleaner.

Signed-off-by: Peter Xu <peterx@redhat.com>
Message-id: 20190306115532.23025-2-peterx@redhat.com
Message-Id: <20190306115532.23025-2-peterx@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 include/sysemu/iothread.h |  3 +--
 iothread.c                | 17 ++++-------------
 2 files changed, 5 insertions(+), 15 deletions(-)

diff --git a/include/sysemu/iothread.h b/include/sysemu/iothread.h
index 8a7ac2c528..50411ba54a 100644
--- a/include/sysemu/iothread.h
+++ b/include/sysemu/iothread.h
@@ -27,8 +27,7 @@ typedef struct {
     GMainContext *worker_context;
     GMainLoop *main_loop;
     GOnce once;
-    QemuMutex init_done_lock;
-    QemuCond init_done_cond;    /* is thread initialization done? */
+    QemuSemaphore init_done_sem; /* is thread init done? */
     bool stopping;              /* has iothread_stop() been called? */
     bool running;               /* should iothread_run() continue? */
     int thread_id;
diff --git a/iothread.c b/iothread.c
index e615b7ae52..6e297e9ef1 100644
--- a/iothread.c
+++ b/iothread.c
@@ -55,10 +55,8 @@ static void *iothread_run(void *opaque)
     rcu_register_thread();
 
     my_iothread = iothread;
-    qemu_mutex_lock(&iothread->init_done_lock);
     iothread->thread_id = qemu_get_thread_id();
-    qemu_cond_signal(&iothread->init_done_cond);
-    qemu_mutex_unlock(&iothread->init_done_lock);
+    qemu_sem_post(&iothread->init_done_sem);
 
     while (iothread->running) {
         aio_poll(iothread->ctx, true);
@@ -115,6 +113,7 @@ static void iothread_instance_init(Object *obj)
 
     iothread->poll_max_ns = IOTHREAD_POLL_MAX_NS_DEFAULT;
     iothread->thread_id = -1;
+    qemu_sem_init(&iothread->init_done_sem, 0);
 }
 
 static void iothread_instance_finalize(Object *obj)
@@ -123,10 +122,6 @@ static void iothread_instance_finalize(Object *obj)
 
     iothread_stop(iothread);
 
-    if (iothread->thread_id != -1) {
-        qemu_cond_destroy(&iothread->init_done_cond);
-        qemu_mutex_destroy(&iothread->init_done_lock);
-    }
     /*
      * Before glib2 2.33.10, there is a glib2 bug that GSource context
      * pointer may not be cleared even if the context has already been
@@ -145,6 +140,7 @@ static void iothread_instance_finalize(Object *obj)
         g_main_context_unref(iothread->worker_context);
         iothread->worker_context = NULL;
     }
+    qemu_sem_destroy(&iothread->init_done_sem);
 }
 
 static void iothread_complete(UserCreatable *obj, Error **errp)
@@ -173,8 +169,6 @@ static void iothread_complete(UserCreatable *obj, Error **errp)
         return;
     }
 
-    qemu_mutex_init(&iothread->init_done_lock);
-    qemu_cond_init(&iothread->init_done_cond);
     iothread->once = (GOnce) G_ONCE_INIT;
 
     /* This assumes we are called from a thread with useful CPU affinity for us
@@ -188,12 +182,9 @@ static void iothread_complete(UserCreatable *obj, Error **errp)
     g_free(name);
 
     /* Wait for initialization to complete */
-    qemu_mutex_lock(&iothread->init_done_lock);
     while (iothread->thread_id == -1) {
-        qemu_cond_wait(&iothread->init_done_cond,
-                       &iothread->init_done_lock);
+        qemu_sem_wait(&iothread->init_done_sem);
     }
-    qemu_mutex_unlock(&iothread->init_done_lock);
 }
 
 typedef struct {
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 4/7] iothread: create the gcontext unconditionally
  2019-03-08 16:53 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi
                   ` (2 preceding siblings ...)
  2019-03-08 16:53 ` [Qemu-devel] [PULL 3/7] iothread: replace init_done_cond with a semaphore Stefan Hajnoczi
@ 2019-03-08 16:53 ` Stefan Hajnoczi
  2019-03-08 16:53 ` [Qemu-devel] [PULL 5/7] iothread: create main loop unconditionally Stefan Hajnoczi
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 28+ messages in thread
From: Stefan Hajnoczi @ 2019-03-08 16:53 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Max Reitz, Michael S. Tsirkin, Kevin Wolf,
	qemu-block, Stefan Hajnoczi, Peter Xu, Marc-André Lureau

From: Peter Xu <peterx@redhat.com>

In existing code we create the gcontext dynamically at the first
access of the gcontext from caller.  That can bring some complexity
and potential races during using iothread.  Since the context itself
is not that big a resource, and we won't have millions of iothread,
let's simply create the gcontext unconditionally.

This will also be a preparation work further to move the thread
context push operation earlier than before (now it's only pushed right
before we want to start running the gmainloop).

Removing the g_once since it's not necessary, while introducing a new
run_gcontext boolean to show whether we want to run the gcontext.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-id: 20190306115532.23025-3-peterx@redhat.com
Message-Id: <20190306115532.23025-3-peterx@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 include/sysemu/iothread.h |  2 +-
 iothread.c                | 43 +++++++++++++++++++--------------------
 2 files changed, 22 insertions(+), 23 deletions(-)

diff --git a/include/sysemu/iothread.h b/include/sysemu/iothread.h
index 50411ba54a..5f6240d5cb 100644
--- a/include/sysemu/iothread.h
+++ b/include/sysemu/iothread.h
@@ -24,9 +24,9 @@ typedef struct {
 
     QemuThread thread;
     AioContext *ctx;
+    bool run_gcontext;          /* whether we should run gcontext */
     GMainContext *worker_context;
     GMainLoop *main_loop;
-    GOnce once;
     QemuSemaphore init_done_sem; /* is thread init done? */
     bool stopping;              /* has iothread_stop() been called? */
     bool running;               /* should iothread_run() continue? */
diff --git a/iothread.c b/iothread.c
index 6e297e9ef1..6fa87876e0 100644
--- a/iothread.c
+++ b/iothread.c
@@ -65,7 +65,7 @@ static void *iothread_run(void *opaque)
          * We must check the running state again in case it was
          * changed in previous aio_poll()
          */
-        if (iothread->running && atomic_read(&iothread->worker_context)) {
+        if (iothread->running && atomic_read(&iothread->run_gcontext)) {
             GMainLoop *loop;
 
             g_main_context_push_thread_default(iothread->worker_context);
@@ -114,6 +114,8 @@ static void iothread_instance_init(Object *obj)
     iothread->poll_max_ns = IOTHREAD_POLL_MAX_NS_DEFAULT;
     iothread->thread_id = -1;
     qemu_sem_init(&iothread->init_done_sem, 0);
+    /* By default, we don't run gcontext */
+    atomic_set(&iothread->run_gcontext, 0);
 }
 
 static void iothread_instance_finalize(Object *obj)
@@ -143,6 +145,16 @@ static void iothread_instance_finalize(Object *obj)
     qemu_sem_destroy(&iothread->init_done_sem);
 }
 
+static void iothread_init_gcontext(IOThread *iothread)
+{
+    GSource *source;
+
+    iothread->worker_context = g_main_context_new();
+    source = aio_get_g_source(iothread_get_aio_context(iothread));
+    g_source_attach(source, iothread->worker_context);
+    g_source_unref(source);
+}
+
 static void iothread_complete(UserCreatable *obj, Error **errp)
 {
     Error *local_error = NULL;
@@ -157,6 +169,12 @@ static void iothread_complete(UserCreatable *obj, Error **errp)
         return;
     }
 
+    /*
+     * Init one GMainContext for the iothread unconditionally, even if
+     * it's not used
+     */
+    iothread_init_gcontext(iothread);
+
     aio_context_set_poll_params(iothread->ctx,
                                 iothread->poll_max_ns,
                                 iothread->poll_grow,
@@ -169,8 +187,6 @@ static void iothread_complete(UserCreatable *obj, Error **errp)
         return;
     }
 
-    iothread->once = (GOnce) G_ONCE_INIT;
-
     /* This assumes we are called from a thread with useful CPU affinity for us
      * to inherit.
      */
@@ -333,27 +349,10 @@ IOThreadInfoList *qmp_query_iothreads(Error **errp)
     return head;
 }
 
-static gpointer iothread_g_main_context_init(gpointer opaque)
-{
-    AioContext *ctx;
-    IOThread *iothread = opaque;
-    GSource *source;
-
-    iothread->worker_context = g_main_context_new();
-
-    ctx = iothread_get_aio_context(iothread);
-    source = aio_get_g_source(ctx);
-    g_source_attach(source, iothread->worker_context);
-    g_source_unref(source);
-
-    aio_notify(iothread->ctx);
-    return NULL;
-}
-
 GMainContext *iothread_get_g_main_context(IOThread *iothread)
 {
-    g_once(&iothread->once, iothread_g_main_context_init, iothread);
-
+    atomic_set(&iothread->run_gcontext, 1);
+    aio_notify(iothread->ctx);
     return iothread->worker_context;
 }
 
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 5/7] iothread: create main loop unconditionally
  2019-03-08 16:53 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi
                   ` (3 preceding siblings ...)
  2019-03-08 16:53 ` [Qemu-devel] [PULL 4/7] iothread: create the gcontext unconditionally Stefan Hajnoczi
@ 2019-03-08 16:53 ` Stefan Hajnoczi
  2019-03-08 16:53 ` [Qemu-devel] [PULL 6/7] iothread: push gcontext earlier in the thread_fn Stefan Hajnoczi
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 28+ messages in thread
From: Stefan Hajnoczi @ 2019-03-08 16:53 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Max Reitz, Michael S. Tsirkin, Kevin Wolf,
	qemu-block, Stefan Hajnoczi, Peter Xu, Marc-André Lureau

From: Peter Xu <peterx@redhat.com>

Since we've have the gcontext always there, create the main loop
altogether.  The iothread_run() is even cleaner.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-id: 20190306115532.23025-4-peterx@redhat.com
Message-Id: <20190306115532.23025-4-peterx@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 iothread.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/iothread.c b/iothread.c
index 6fa87876e0..9abdbace66 100644
--- a/iothread.c
+++ b/iothread.c
@@ -66,17 +66,8 @@ static void *iothread_run(void *opaque)
          * changed in previous aio_poll()
          */
         if (iothread->running && atomic_read(&iothread->run_gcontext)) {
-            GMainLoop *loop;
-
             g_main_context_push_thread_default(iothread->worker_context);
-            iothread->main_loop =
-                g_main_loop_new(iothread->worker_context, TRUE);
-            loop = iothread->main_loop;
-
             g_main_loop_run(iothread->main_loop);
-            iothread->main_loop = NULL;
-            g_main_loop_unref(loop);
-
             g_main_context_pop_thread_default(iothread->worker_context);
         }
     }
@@ -141,6 +132,8 @@ static void iothread_instance_finalize(Object *obj)
     if (iothread->worker_context) {
         g_main_context_unref(iothread->worker_context);
         iothread->worker_context = NULL;
+        g_main_loop_unref(iothread->main_loop);
+        iothread->main_loop = NULL;
     }
     qemu_sem_destroy(&iothread->init_done_sem);
 }
@@ -153,6 +146,7 @@ static void iothread_init_gcontext(IOThread *iothread)
     source = aio_get_g_source(iothread_get_aio_context(iothread));
     g_source_attach(source, iothread->worker_context);
     g_source_unref(source);
+    iothread->main_loop = g_main_loop_new(iothread->worker_context, TRUE);
 }
 
 static void iothread_complete(UserCreatable *obj, Error **errp)
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 6/7] iothread: push gcontext earlier in the thread_fn
  2019-03-08 16:53 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi
                   ` (4 preceding siblings ...)
  2019-03-08 16:53 ` [Qemu-devel] [PULL 5/7] iothread: create main loop unconditionally Stefan Hajnoczi
@ 2019-03-08 16:53 ` Stefan Hajnoczi
  2019-03-08 16:53 ` [Qemu-devel] [PULL 7/7] iothread: document about why we need explicit aio_poll() Stefan Hajnoczi
  2019-03-09 20:55 ` [Qemu-devel] [PULL 0/7] Block patches Peter Maydell
  7 siblings, 0 replies; 28+ messages in thread
From: Stefan Hajnoczi @ 2019-03-08 16:53 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Max Reitz, Michael S. Tsirkin, Kevin Wolf,
	qemu-block, Stefan Hajnoczi, Peter Xu

From: Peter Xu <peterx@redhat.com>

We were pushing the context until right before running the gmainloop.
Now since we have everything unconditionally, we can move this
earlier.

One benefit is that now it's done even before init_done_sem, so as
long as the iothread user calls iothread_create() and completes, we
know that the thread stack is ready.

Signed-off-by: Peter Xu <peterx@redhat.com>
Message-id: 20190306115532.23025-5-peterx@redhat.com
Message-Id: <20190306115532.23025-5-peterx@redhat.com>

[Tweaked comment wording as discussed with Peter Xu.
--Stefan]

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 iothread.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/iothread.c b/iothread.c
index 9abdbace66..ad64c757ac 100644
--- a/iothread.c
+++ b/iothread.c
@@ -53,7 +53,11 @@ static void *iothread_run(void *opaque)
     IOThread *iothread = opaque;
 
     rcu_register_thread();
-
+    /*
+     * g_main_context_push_thread_default() must be called before anything
+     * in this new thread uses glib.
+     */
+    g_main_context_push_thread_default(iothread->worker_context);
     my_iothread = iothread;
     iothread->thread_id = qemu_get_thread_id();
     qemu_sem_post(&iothread->init_done_sem);
@@ -66,12 +70,11 @@ static void *iothread_run(void *opaque)
          * changed in previous aio_poll()
          */
         if (iothread->running && atomic_read(&iothread->run_gcontext)) {
-            g_main_context_push_thread_default(iothread->worker_context);
             g_main_loop_run(iothread->main_loop);
-            g_main_context_pop_thread_default(iothread->worker_context);
         }
     }
 
+    g_main_context_pop_thread_default(iothread->worker_context);
     rcu_unregister_thread();
     return NULL;
 }
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 7/7] iothread: document about why we need explicit aio_poll()
  2019-03-08 16:53 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi
                   ` (5 preceding siblings ...)
  2019-03-08 16:53 ` [Qemu-devel] [PULL 6/7] iothread: push gcontext earlier in the thread_fn Stefan Hajnoczi
@ 2019-03-08 16:53 ` Stefan Hajnoczi
  2019-03-09 20:55 ` [Qemu-devel] [PULL 0/7] Block patches Peter Maydell
  7 siblings, 0 replies; 28+ messages in thread
From: Stefan Hajnoczi @ 2019-03-08 16:53 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Max Reitz, Michael S. Tsirkin, Kevin Wolf,
	qemu-block, Stefan Hajnoczi, Peter Xu, Marc-André Lureau

From: Peter Xu <peterx@redhat.com>

After consulting Paolo I know why we'd better keep the explicit
aio_poll() in iothread_run().  Document it directly into the code so
that future readers will know the answer from day one.

Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-id: 20190306115532.23025-6-peterx@redhat.com
Message-Id: <20190306115532.23025-6-peterx@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 iothread.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/iothread.c b/iothread.c
index ad64c757ac..7130be58e3 100644
--- a/iothread.c
+++ b/iothread.c
@@ -63,6 +63,15 @@ static void *iothread_run(void *opaque)
     qemu_sem_post(&iothread->init_done_sem);
 
     while (iothread->running) {
+        /*
+         * Note: from functional-wise the g_main_loop_run() below can
+         * already cover the aio_poll() events, but we can't run the
+         * main loop unconditionally because explicit aio_poll() here
+         * is faster than g_main_loop_run() when we do not need the
+         * gcontext at all (e.g., pure block layer iothreads).  In
+         * other words, when we want to run the gcontext with the
+         * iothread we need to pay some performance for functionality.
+         */
         aio_poll(iothread->ctx, true);
 
         /*
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [Qemu-devel] [PULL 0/7] Block patches
  2019-03-08 16:53 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi
                   ` (6 preceding siblings ...)
  2019-03-08 16:53 ` [Qemu-devel] [PULL 7/7] iothread: document about why we need explicit aio_poll() Stefan Hajnoczi
@ 2019-03-09 20:55 ` Peter Maydell
  7 siblings, 0 replies; 28+ messages in thread
From: Peter Maydell @ 2019-03-09 20:55 UTC (permalink / raw)
  To: Stefan Hajnoczi
  Cc: QEMU Developers, Max Reitz, Michael S. Tsirkin, Kevin Wolf, Qemu-block

On Fri, 8 Mar 2019 at 16:53, Stefan Hajnoczi <stefanha@redhat.com> wrote:
>
> The following changes since commit 6cb4f6db4f4367faa33da85b15f75bbbd2bed2a6:
>
>   Merge remote-tracking branch 'remotes/cleber/tags/python-next-pull-request' into staging (2019-03-07 16:16:02 +0000)
>
> are available in the Git repository at:
>
>   git://github.com/stefanha/qemu.git tags/block-pull-request
>
> for you to fetch changes up to 6ca206204fa773c8626d59caf2a5676d6cc35f52:
>
>   iothread: document about why we need explicit aio_poll() (2019-03-08 10:20:57 +0000)
>
> ----------------------------------------------------------------
> Pull request
>
> ----------------------------------------------------------------

Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/4.0
for any user-visible changes.

-- PMM

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [Qemu-devel] [PULL 0/7] Block patches
  2018-03-09 13:19 Stefan Hajnoczi
@ 2018-03-09 18:49 ` Peter Maydell
  0 siblings, 0 replies; 28+ messages in thread
From: Peter Maydell @ 2018-03-09 18:49 UTC (permalink / raw)
  To: Stefan Hajnoczi
  Cc: QEMU Developers, Peter Crosthwaite, Kevin Wolf, Paolo Bonzini,
	Qemu-block, Fam Zheng, Michael S. Tsirkin, Max Reitz,
	Richard Henderson

On 9 March 2018 at 13:19, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> The following changes since commit 0ab4537f08e09b13788db67efd760592fb7db769:
>
>   Merge remote-tracking branch 'remotes/stefanberger/tags/pull-tpm-2018-03-07-1' into staging (2018-03-08 12:56:39 +0000)
>
> are available in the Git repository at:
>
>   git://github.com/stefanha/qemu.git tags/block-pull-request
>
> for you to fetch changes up to 4486e89c219c0d1b9bd8dfa0b1dd5b0d51ff2268:
>
>   vl: introduce vm_shutdown() (2018-03-08 17:38:51 +0000)
>
> ----------------------------------------------------------------
>
> ----------------------------------------------------------------

Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 0/7] Block patches
@ 2018-03-09 13:19 Stefan Hajnoczi
  2018-03-09 18:49 ` Peter Maydell
  0 siblings, 1 reply; 28+ messages in thread
From: Stefan Hajnoczi @ 2018-03-09 13:19 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefan Hajnoczi, Peter Crosthwaite, Peter Maydell, Kevin Wolf,
	Paolo Bonzini, qemu-block, Fam Zheng, Michael S. Tsirkin,
	Max Reitz, Richard Henderson

The following changes since commit 0ab4537f08e09b13788db67efd760592fb7db769:

  Merge remote-tracking branch 'remotes/stefanberger/tags/pull-tpm-2018-03-07-1' into staging (2018-03-08 12:56:39 +0000)

are available in the Git repository at:

  git://github.com/stefanha/qemu.git tags/block-pull-request

for you to fetch changes up to 4486e89c219c0d1b9bd8dfa0b1dd5b0d51ff2268:

  vl: introduce vm_shutdown() (2018-03-08 17:38:51 +0000)

----------------------------------------------------------------

----------------------------------------------------------------

Deepa Srinivasan (1):
  block: Fix qemu crash when using scsi-block

Fam Zheng (1):
  README: Fix typo 'git-publish'

Sergio Lopez (1):
  virtio-blk: dataplane: Don't batch notifications if EVENT_IDX is
    present

Stefan Hajnoczi (4):
  block: add aio_wait_bh_oneshot()
  virtio-blk: fix race between .ioeventfd_stop() and vq handler
  virtio-scsi: fix race between .ioeventfd_stop() and vq handler
  vl: introduce vm_shutdown()

 include/block/aio-wait.h        | 13 +++++++++++
 include/sysemu/iothread.h       |  1 -
 include/sysemu/sysemu.h         |  1 +
 block/block-backend.c           | 51 ++++++++++++++++++++---------------------
 cpus.c                          | 16 ++++++++++---
 hw/block/dataplane/virtio-blk.c | 39 +++++++++++++++++++++++--------
 hw/scsi/virtio-scsi-dataplane.c |  9 ++++----
 iothread.c                      | 31 -------------------------
 util/aio-wait.c                 | 31 +++++++++++++++++++++++++
 vl.c                            | 13 +++--------
 README                          |  2 +-
 11 files changed, 122 insertions(+), 85 deletions(-)

-- 
2.14.3

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [Qemu-devel] [PULL 0/7] Block patches
  2017-06-30 11:46 Stefan Hajnoczi
@ 2017-06-30 13:58 ` Peter Maydell
  0 siblings, 0 replies; 28+ messages in thread
From: Peter Maydell @ 2017-06-30 13:58 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: QEMU Developers

On 30 June 2017 at 12:46, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> The following changes since commit 464588675455afda2899e20a0b120e4075de50c7:
>
>   Merge remote-tracking branch 'remotes/sstabellini/tags/xen-20170627-tag' into staging (2017-06-29 11:45:01 +0100)
>
> are available in the git repository at:
>
>   git://github.com/stefanha/qemu.git tags/block-pull-request
>
> for you to fetch changes up to c324fd0a39cee43c13f6d1fb34f74fc5e2fb007b:
>
>   virtio-pci: use ioeventfd even when KVM is disabled (2017-06-30 11:03:45 +0100)
>
> ----------------------------------------------------------------
>
> ----------------------------------------------------------------
>
> Stefan Hajnoczi (7):
>   virtio-blk: trace vdev so devices can be distinguished
>   libqos: fix typo in virtio.h QVirtQueue->used comment
>   libqos: add virtio used ring support
>   tests: fix virtio-scsi-test ISR dependence
>   tests: fix virtio-blk-test ISR dependence
>   tests: fix virtio-net-test ISR dependence
>   virtio-pci: use ioeventfd even when KVM is disabled

Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 0/7] Block patches
@ 2017-06-30 11:46 Stefan Hajnoczi
  2017-06-30 13:58 ` Peter Maydell
  0 siblings, 1 reply; 28+ messages in thread
From: Stefan Hajnoczi @ 2017-06-30 11:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi

The following changes since commit 464588675455afda2899e20a0b120e4075de50c7:

  Merge remote-tracking branch 'remotes/sstabellini/tags/xen-20170627-tag' into staging (2017-06-29 11:45:01 +0100)

are available in the git repository at:

  git://github.com/stefanha/qemu.git tags/block-pull-request

for you to fetch changes up to c324fd0a39cee43c13f6d1fb34f74fc5e2fb007b:

  virtio-pci: use ioeventfd even when KVM is disabled (2017-06-30 11:03:45 +0100)

----------------------------------------------------------------

----------------------------------------------------------------

Stefan Hajnoczi (7):
  virtio-blk: trace vdev so devices can be distinguished
  libqos: fix typo in virtio.h QVirtQueue->used comment
  libqos: add virtio used ring support
  tests: fix virtio-scsi-test ISR dependence
  tests: fix virtio-blk-test ISR dependence
  tests: fix virtio-net-test ISR dependence
  virtio-pci: use ioeventfd even when KVM is disabled

 tests/libqos/virtio.h    |  8 ++++++-
 hw/block/virtio-blk.c    | 12 ++++++----
 hw/virtio/virtio-pci.c   |  2 +-
 tests/libqos/virtio.c    | 60 ++++++++++++++++++++++++++++++++++++++++++++++++
 tests/virtio-blk-test.c  | 27 ++++++++++++++--------
 tests/virtio-net-test.c  |  6 ++---
 tests/virtio-scsi-test.c |  2 +-
 hw/block/trace-events    | 10 ++++----
 8 files changed, 101 insertions(+), 26 deletions(-)

-- 
2.9.4

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [Qemu-devel] [PULL 0/7] Block patches
  2016-09-28 18:15 Stefan Hajnoczi
@ 2016-09-28 22:02 ` Peter Maydell
  0 siblings, 0 replies; 28+ messages in thread
From: Peter Maydell @ 2016-09-28 22:02 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: QEMU Developers

On 28 September 2016 at 11:15, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> The following changes since commit 25930ed60aad49f1fdd7de05272317c86ce1275b:
>
>   Merge remote-tracking branch 'remotes/ehabkost/tags/x86-pull-request' into staging (2016-09-27 23:10:12 +0100)
>
> are available in the git repository at:
>
>   git://github.com/stefanha/qemu.git tags/block-pull-request
>
> for you to fetch changes up to fe121b9d3c4258e41f7efa4976bf79151b2d5dbb:
>
>   linux-aio: fix re-entrant completion processing (2016-09-28 17:11:23 +0100)
>
> ----------------------------------------------------------------
>
> ----------------------------------------------------------------
>
> Laurent Vivier (1):
>   libqos: fix qvring_init()
>
> Lin Ma (1):
>   iothread: check iothread->ctx before aio_context_unref to avoid
>     assertion
>
> Stefan Hajnoczi (3):
>   coroutine: add qemu_coroutine_entered() function
>   test-coroutine: test qemu_coroutine_entered()
>   linux-aio: fix re-entrant completion processing
>
> Yaowei Bai (2):
>   block: mirror: fix wrong comment of mirror_start
>   aio-posix: avoid unnecessary aio_epoll_enabled() calls

Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 0/7] Block patches
@ 2016-09-28 18:15 Stefan Hajnoczi
  2016-09-28 22:02 ` Peter Maydell
  0 siblings, 1 reply; 28+ messages in thread
From: Stefan Hajnoczi @ 2016-09-28 18:15 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi

The following changes since commit 25930ed60aad49f1fdd7de05272317c86ce1275b:

  Merge remote-tracking branch 'remotes/ehabkost/tags/x86-pull-request' into staging (2016-09-27 23:10:12 +0100)

are available in the git repository at:

  git://github.com/stefanha/qemu.git tags/block-pull-request

for you to fetch changes up to fe121b9d3c4258e41f7efa4976bf79151b2d5dbb:

  linux-aio: fix re-entrant completion processing (2016-09-28 17:11:23 +0100)

----------------------------------------------------------------

----------------------------------------------------------------

Laurent Vivier (1):
  libqos: fix qvring_init()

Lin Ma (1):
  iothread: check iothread->ctx before aio_context_unref to avoid
    assertion

Stefan Hajnoczi (3):
  coroutine: add qemu_coroutine_entered() function
  test-coroutine: test qemu_coroutine_entered()
  linux-aio: fix re-entrant completion processing

Yaowei Bai (2):
  block: mirror: fix wrong comment of mirror_start
  aio-posix: avoid unnecessary aio_epoll_enabled() calls

 aio-posix.c               | 12 +++++++-----
 block/linux-aio.c         |  9 ++++++---
 include/block/block_int.h |  2 +-
 include/qemu/coroutine.h  | 13 +++++++++++++
 iothread.c                |  3 +++
 tests/libqos/virtio.c     |  2 +-
 tests/test-coroutine.c    | 42 ++++++++++++++++++++++++++++++++++++++++++
 util/qemu-coroutine.c     |  5 +++++
 8 files changed, 78 insertions(+), 10 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [Qemu-devel] [PULL 0/7] Block patches
  2015-11-09  7:35     ` Markus Armbruster
@ 2015-11-09 10:01       ` Stefan Hajnoczi
  0 siblings, 0 replies; 28+ messages in thread
From: Stefan Hajnoczi @ 2015-11-09 10:01 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: Peter Maydell, Fam Zheng, QEMU Developers

[-- Attachment #1: Type: text/plain, Size: 1885 bytes --]

On Mon, Nov 09, 2015 at 08:35:56AM +0100, Markus Armbruster wrote:
> Fam Zheng <famz@redhat.com> writes:
> 
> > On Fri, 11/06 18:07, Peter Maydell wrote:
> >> On 6 November 2015 at 17:52, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> >> > The following changes since commit 4b59f39bc9a03afcc74b2fa28da7c3189fca507c:
> >> >
> >> >   Merge remote-tracking branch
> >> > 'remotes/mjt/tags/pull-trivial-patches-2015-11-06' into staging
> >> > (2015-11-06 12:50:24 +0000)
> >> >
> >> > are available in the git repository at:
> >> >
> >> >   git://github.com/stefanha/qemu.git tags/block-pull-request
> >> >
> >> > for you to fetch changes up to 6f707181b1bd6ccf2d2fd9397039c7ef6fa4a9fd:
> >> >
> >> >   blockdev: acquire AioContext in hmp_commit() (2015-11-06 15:41:00 +0000)
> >> >
> >> > ----------------------------------------------------------------
> >> 
> >> Build failure on OSX :-(
> >> 
> >> /Users/pm215/src/qemu-for-merges/aio-posix.c  CC    block/qcow.o
> >> :442:37: error: no member named 'epollfd' in 'struct AioContext'
> >>         epoll_handler.pfd.fd = ctx->epollfd;
> >>                                ~~~  ^
> >> 
> >
> > :(
> >
> > I think it is harmless to always include this member in AioContext. Stefan,
> > could you squash this into patch 5?  Thanks!
> >
> > Fam
> >
> > ---
> >
> > diff --git a/include/block/aio.h b/include/block/aio.h
> > index 91737d5..735f1f8 100644
> > --- a/include/block/aio.h
> > +++ b/include/block/aio.h
> > @@ -124,11 +124,9 @@ struct AioContext {
> >      QEMUTimerListGroup tlg;
> >  
> >      int external_disable_cnt;
> > -#ifdef CONFIG_EPOLL
> >      int epollfd;
> >      bool epoll_enabled;
> >      bool epoll_available;
> > -#endif
> >  };
> 
> Replace by the ifdeffery by a comment pointing to CONFIG_EPOLL, perhaps?

Done.  Will send a v2 pull request.

Stefan

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [Qemu-devel] [PULL 0/7] Block patches
  2015-11-09  2:00   ` Fam Zheng
@ 2015-11-09  7:35     ` Markus Armbruster
  2015-11-09 10:01       ` Stefan Hajnoczi
  0 siblings, 1 reply; 28+ messages in thread
From: Markus Armbruster @ 2015-11-09  7:35 UTC (permalink / raw)
  To: Fam Zheng; +Cc: Peter Maydell, QEMU Developers, Stefan Hajnoczi

Fam Zheng <famz@redhat.com> writes:

> On Fri, 11/06 18:07, Peter Maydell wrote:
>> On 6 November 2015 at 17:52, Stefan Hajnoczi <stefanha@redhat.com> wrote:
>> > The following changes since commit 4b59f39bc9a03afcc74b2fa28da7c3189fca507c:
>> >
>> >   Merge remote-tracking branch
>> > 'remotes/mjt/tags/pull-trivial-patches-2015-11-06' into staging
>> > (2015-11-06 12:50:24 +0000)
>> >
>> > are available in the git repository at:
>> >
>> >   git://github.com/stefanha/qemu.git tags/block-pull-request
>> >
>> > for you to fetch changes up to 6f707181b1bd6ccf2d2fd9397039c7ef6fa4a9fd:
>> >
>> >   blockdev: acquire AioContext in hmp_commit() (2015-11-06 15:41:00 +0000)
>> >
>> > ----------------------------------------------------------------
>> 
>> Build failure on OSX :-(
>> 
>> /Users/pm215/src/qemu-for-merges/aio-posix.c  CC    block/qcow.o
>> :442:37: error: no member named 'epollfd' in 'struct AioContext'
>>         epoll_handler.pfd.fd = ctx->epollfd;
>>                                ~~~  ^
>> 
>
> :(
>
> I think it is harmless to always include this member in AioContext. Stefan,
> could you squash this into patch 5?  Thanks!
>
> Fam
>
> ---
>
> diff --git a/include/block/aio.h b/include/block/aio.h
> index 91737d5..735f1f8 100644
> --- a/include/block/aio.h
> +++ b/include/block/aio.h
> @@ -124,11 +124,9 @@ struct AioContext {
>      QEMUTimerListGroup tlg;
>  
>      int external_disable_cnt;
> -#ifdef CONFIG_EPOLL
>      int epollfd;
>      bool epoll_enabled;
>      bool epoll_available;
> -#endif
>  };

Replace by the ifdeffery by a comment pointing to CONFIG_EPOLL, perhaps?

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [Qemu-devel] [PULL 0/7] Block patches
  2015-11-06 18:07 ` Peter Maydell
@ 2015-11-09  2:00   ` Fam Zheng
  2015-11-09  7:35     ` Markus Armbruster
  0 siblings, 1 reply; 28+ messages in thread
From: Fam Zheng @ 2015-11-09  2:00 UTC (permalink / raw)
  To: Peter Maydell; +Cc: QEMU Developers, Stefan Hajnoczi

On Fri, 11/06 18:07, Peter Maydell wrote:
> On 6 November 2015 at 17:52, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> > The following changes since commit 4b59f39bc9a03afcc74b2fa28da7c3189fca507c:
> >
> >   Merge remote-tracking branch 'remotes/mjt/tags/pull-trivial-patches-2015-11-06' into staging (2015-11-06 12:50:24 +0000)
> >
> > are available in the git repository at:
> >
> >   git://github.com/stefanha/qemu.git tags/block-pull-request
> >
> > for you to fetch changes up to 6f707181b1bd6ccf2d2fd9397039c7ef6fa4a9fd:
> >
> >   blockdev: acquire AioContext in hmp_commit() (2015-11-06 15:41:00 +0000)
> >
> > ----------------------------------------------------------------
> 
> Build failure on OSX :-(
> 
> /Users/pm215/src/qemu-for-merges/aio-posix.c  CC    block/qcow.o
> :442:37: error: no member named 'epollfd' in 'struct AioContext'
>         epoll_handler.pfd.fd = ctx->epollfd;
>                                ~~~  ^
> 

:(

I think it is harmless to always include this member in AioContext. Stefan,
could you squash this into patch 5?  Thanks!

Fam

---

diff --git a/include/block/aio.h b/include/block/aio.h
index 91737d5..735f1f8 100644
--- a/include/block/aio.h
+++ b/include/block/aio.h
@@ -124,11 +124,9 @@ struct AioContext {
     QEMUTimerListGroup tlg;
 
     int external_disable_cnt;
-#ifdef CONFIG_EPOLL
     int epollfd;
     bool epoll_enabled;
     bool epoll_available;
-#endif
 };
                                                                               
 /**                                                                           

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [Qemu-devel] [PULL 0/7] Block patches
  2015-11-06 17:52 Stefan Hajnoczi
@ 2015-11-06 18:07 ` Peter Maydell
  2015-11-09  2:00   ` Fam Zheng
  0 siblings, 1 reply; 28+ messages in thread
From: Peter Maydell @ 2015-11-06 18:07 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: QEMU Developers

On 6 November 2015 at 17:52, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> The following changes since commit 4b59f39bc9a03afcc74b2fa28da7c3189fca507c:
>
>   Merge remote-tracking branch 'remotes/mjt/tags/pull-trivial-patches-2015-11-06' into staging (2015-11-06 12:50:24 +0000)
>
> are available in the git repository at:
>
>   git://github.com/stefanha/qemu.git tags/block-pull-request
>
> for you to fetch changes up to 6f707181b1bd6ccf2d2fd9397039c7ef6fa4a9fd:
>
>   blockdev: acquire AioContext in hmp_commit() (2015-11-06 15:41:00 +0000)
>
> ----------------------------------------------------------------

Build failure on OSX :-(

/Users/pm215/src/qemu-for-merges/aio-posix.c  CC    block/qcow.o
:442:37: error: no member named 'epollfd' in 'struct AioContext'
        epoll_handler.pfd.fd = ctx->epollfd;
                               ~~~  ^

thanks
-- PMM

^ permalink raw reply	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 0/7] Block patches
@ 2015-11-06 17:52 Stefan Hajnoczi
  2015-11-06 18:07 ` Peter Maydell
  0 siblings, 1 reply; 28+ messages in thread
From: Stefan Hajnoczi @ 2015-11-06 17:52 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi

The following changes since commit 4b59f39bc9a03afcc74b2fa28da7c3189fca507c:

  Merge remote-tracking branch 'remotes/mjt/tags/pull-trivial-patches-2015-11-06' into staging (2015-11-06 12:50:24 +0000)

are available in the git repository at:

  git://github.com/stefanha/qemu.git tags/block-pull-request

for you to fetch changes up to 6f707181b1bd6ccf2d2fd9397039c7ef6fa4a9fd:

  blockdev: acquire AioContext in hmp_commit() (2015-11-06 15:41:00 +0000)

----------------------------------------------------------------

----------------------------------------------------------------

Denis V. Lunev (1):
  monitor: add missed aio_context_acquire into vm_completion call

Fam Zheng (3):
  aio: Introduce aio_external_disabled
  aio: Introduce aio_context_setup
  aio: Introduce aio-epoll.c

Michael S. Tsirkin (2):
  dataplane: simplify indirect descriptor read
  dataplane: support non-contigious s/g

Stefan Hajnoczi (1):
  blockdev: acquire AioContext in hmp_commit()

 aio-posix.c                 | 188 +++++++++++++++++++++++++++++++++++++++++++-
 aio-win32.c                 |   4 +
 async.c                     |  13 ++-
 blockdev.c                  |  12 ++-
 hw/virtio/dataplane/vring.c |  96 ++++++++++++++--------
 include/block/aio.h         |  24 ++++++
 monitor.c                   |  11 ++-
 7 files changed, 309 insertions(+), 39 deletions(-)

-- 
2.5.0

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [Qemu-devel] [PULL 0/7] Block patches
  2015-09-25 15:50 Jeff Cody
@ 2015-09-25 19:21 ` Peter Maydell
  0 siblings, 0 replies; 28+ messages in thread
From: Peter Maydell @ 2015-09-25 19:21 UTC (permalink / raw)
  To: Jeff Cody; +Cc: QEMU Developers, Qemu-block

On 25 September 2015 at 08:50, Jeff Cody <jcody@redhat.com> wrote:
> The following changes since commit eb9d0ea063fc7bdfab76b84085602a9e48d13ec7:
>
>   Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20150924' into staging (2015-09-24 01:32:11 +0100)
>
> are available in the git repository at:
>
>
>   git@github.com:codyprime/qemu-kvm-jtc.git tags/block-pull-request
>
> for you to fetch changes up to e6fd57ea297ec3aad32b24090c5d3757a99df3fe:
>
>   sheepdog: refine discard support (2015-09-25 10:25:19 -0400)
>
> ----------------------------------------------------------------
> Block patches
> ----------------------------------------------------------------
>

Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 0/7] Block patches
@ 2015-09-25 15:50 Jeff Cody
  2015-09-25 19:21 ` Peter Maydell
  0 siblings, 1 reply; 28+ messages in thread
From: Jeff Cody @ 2015-09-25 15:50 UTC (permalink / raw)
  To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel

The following changes since commit eb9d0ea063fc7bdfab76b84085602a9e48d13ec7:

  Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20150924' into staging (2015-09-24 01:32:11 +0100)

are available in the git repository at:


  git@github.com:codyprime/qemu-kvm-jtc.git tags/block-pull-request

for you to fetch changes up to e6fd57ea297ec3aad32b24090c5d3757a99df3fe:

  sheepdog: refine discard support (2015-09-25 10:25:19 -0400)

----------------------------------------------------------------
Block patches
----------------------------------------------------------------

Hitoshi Mitake (2):
  sheepdog: use per AIOCB dirty indexes for non overlapping requests
  sheepdog: refine discard support

Liu Yuan (1):
  sheepdog: add reopen support

Peter Lieven (2):
  block/nfs: fix calculation of allocated file size
  block/nfs: cache allocated filesize for read-only files

Wen Congyang (2):
  block: Introduce a new API bdrv_co_no_copy_on_readv()
  Backup: don't do copy-on-read in before_write_notifier

 block/backup.c        |  20 ++++--
 block/io.c            |  12 +++-
 block/nfs.c           |  38 +++++++++++-
 block/sheepdog.c      | 168 +++++++++++++++++++++++++++++++++++++++-----------
 include/block/block.h |   9 ++-
 trace-events          |   1 +
 6 files changed, 200 insertions(+), 48 deletions(-)

-- 
1.9.3

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [Qemu-devel] [PULL 0/7] Block patches
  2015-04-30 19:10 Kevin Wolf
@ 2015-05-01  8:59 ` Peter Maydell
  0 siblings, 0 replies; 28+ messages in thread
From: Peter Maydell @ 2015-05-01  8:59 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: QEMU Developers, qemu-block

On 30 April 2015 at 20:10, Kevin Wolf <kwolf@redhat.com> wrote:
> The following changes since commit 06feaacfb4cfef10cc0c93d97df7bfc8a71dbc7e:
>
>   Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging (2015-04-30 12:04:11 +0100)
>
> are available in the git repository at:
>
>
>   git://repo.or.cz/qemu/kevin.git tags/for-upstream
>
> for you to fetch changes up to 4a4d614ff56b4cf15e83629946afe51dc116053f:
>
>   Enable NVMe start controller for Windows guest. (2015-04-30 15:35:26 +0200)
>
> ----------------------------------------------------------------
> Block patches
>
> ----------------------------------------------------------------

Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 0/7] Block patches
@ 2015-04-30 19:10 Kevin Wolf
  2015-05-01  8:59 ` Peter Maydell
  0 siblings, 1 reply; 28+ messages in thread
From: Kevin Wolf @ 2015-04-30 19:10 UTC (permalink / raw)
  To: qemu-block; +Cc: kwolf, qemu-devel

The following changes since commit 06feaacfb4cfef10cc0c93d97df7bfc8a71dbc7e:

  Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging (2015-04-30 12:04:11 +0100)

are available in the git repository at:


  git://repo.or.cz/qemu/kevin.git tags/for-upstream

for you to fetch changes up to 4a4d614ff56b4cf15e83629946afe51dc116053f:

  Enable NVMe start controller for Windows guest. (2015-04-30 15:35:26 +0200)

----------------------------------------------------------------
Block patches

----------------------------------------------------------------
Daniel Stekloff (1):
      Enable NVMe start controller for Windows guest.

Kevin Wolf (1):
      MAINTAINERS: Add qemu-block list where missing

Stefan Hajnoczi (5):
      MAINTAINERS: make virtio-blk Stefan Hajnoczi's responsibility
      MAINTAINERS: split out image formats
      MAINTAINERS: make block I/O path Stefan Hajnoczi's responsibility
      MAINTAINERS: make image fuzzer Stefan Hajnoczi's responsibility
      MAINTAINERS: make block layer core Kevin Wolf's responsibility

 MAINTAINERS     | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
 hw/block/nvme.c |   7 ++++
 2 files changed, 110 insertions(+), 7 deletions(-)

^ permalink raw reply	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 0/7] Block patches
@ 2013-10-18 14:18 Stefan Hajnoczi
  0 siblings, 0 replies; 28+ messages in thread
From: Stefan Hajnoczi @ 2013-10-18 14:18 UTC (permalink / raw)
  To: qemu-devel; +Cc: Stefan Hajnoczi, Anthony Liguori

The following changes since commit 1680d485777ecf436d724631ea8722cc0c66990e:

  Merge remote-tracking branch 'rth/tcg-ldst-6' into staging (2013-10-14 09:59:59 -0700)

are available in the git repository at:


  git://github.com/stefanha/qemu.git block

for you to fetch changes up to dbbcaa8d4358fdf3c42bf01e9e2d687300e84770:

  vmdk: fix VMFS extent parsing (2013-10-18 13:41:36 +0200)

----------------------------------------------------------------
Andreas Färber (1):
      sd: Avoid access to NULL BlockDriverState

Fam Zheng (3):
      blockdev: fix cdrom read_only flag
      vmdk: Only read cid from image file when opening
      vmdk: fix VMFS extent parsing

Max Reitz (1):
      block/raw-win32: Always use -errno in hdev_open

Mike Qiu (1):
      hmp: drop bogus "[not inserted]"

Stefan Weil (1):
      virtio: Remove unneeded memcpy

 block/raw-win32.c     |  5 ++---
 block/vmdk.c          | 10 +++++-----
 blockdev.c            |  7 ++++---
 hmp.c                 |  2 --
 hw/block/virtio-blk.c |  1 -
 hw/sd/sd.c            |  2 +-
 6 files changed, 12 insertions(+), 15 deletions(-)

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [Qemu-devel] [PULL 0/7] Block patches
  2013-06-17 16:31 Kevin Wolf
@ 2013-06-17 21:17 ` Anthony Liguori
  0 siblings, 0 replies; 28+ messages in thread
From: Anthony Liguori @ 2013-06-17 21:17 UTC (permalink / raw)
  To: Kevin Wolf, anthony; +Cc: qemu-devel

Pulled.  Thanks.

Regards,

Anthony Liguori

^ permalink raw reply	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 0/7] Block patches
@ 2013-06-17 16:31 Kevin Wolf
  2013-06-17 21:17 ` Anthony Liguori
  0 siblings, 1 reply; 28+ messages in thread
From: Kevin Wolf @ 2013-06-17 16:31 UTC (permalink / raw)
  To: anthony; +Cc: kwolf, qemu-devel

The following changes since commit 38aea177d93556aada7c4c7aa530f0050715e293:

  Merge remote-tracking branch 'pmaydell/configury.next' into staging (2013-06-17 08:57:57 -0500)

are available in the git repository at:


  git://repo.or.cz/qemu/kevin.git for-anthony

for you to fetch changes up to 0bed087df24c7b3fae366f239b9d150de3309416:

  vmdk: Allow reading variable size descriptor files (2013-06-17 17:47:59 +0200)

----------------------------------------------------------------
Evgeny Budilovsky (1):
      vmdk: Allow reading variable size descriptor files

Keith Busch (1):
      NVMe: Initial commit for new storage interface

Liu Yuan (2):
      sheepdog: fix snapshot tag initialization
      sheepdog: support 'qemu-img snapshot -a'

Richard W.M. Jones (2):
      block/curl.c: Refuse to open the handle for writes.
      curl: Don't set curl options on the handle just before it's going to be deleted.

Stefan Hajnoczi (1):
      vmdk: byteswap VMDK4Header.desc_offset field

 MAINTAINERS              |   5 +
 block/curl.c             |   8 +-
 block/sheepdog.c         |  14 +-
 block/vmdk.c             |  34 +-
 default-configs/pci.mak  |   1 +
 hw/block/Makefile.objs   |   1 +
 hw/block/nvme.c          | 885 +++++++++++++++++++++++++++++++++++++++++++++++
 hw/block/nvme.h          | 711 +++++++++++++++++++++++++++++++++++++
 include/hw/pci/pci_ids.h |   1 +
 9 files changed, 1641 insertions(+), 19 deletions(-)
 create mode 100644 hw/block/nvme.c
 create mode 100644 hw/block/nvme.h

^ permalink raw reply	[flat|nested] 28+ messages in thread

* [Qemu-devel] [PULL 0/7] Block patches
@ 2010-07-26 14:01 Kevin Wolf
  0 siblings, 0 replies; 28+ messages in thread
From: Kevin Wolf @ 2010-07-26 14:01 UTC (permalink / raw)
  To: anthony; +Cc: kwolf, qemu-devel

Some more fixes for 0.13.

The following changes since commit cdcf9153e5e17dde340135fee5dcc7c299f2d4f5:

  etrax: Update ethernet mgm-ctrl reg on writes (2010-07-25 21:03:56 +0200)

are available in the git repository at:
  git://repo.or.cz/qemu/kevin.git for-anthony

Alex Williamson (1):
      virtio-blk: Create exit function to unregister savevm

Aurelien Jarno (1):
      ide/atapi: add support for GET EVENT STATUS NOTIFICATION

Blue Swirl (1):
      Fix -snapshot deleting images on disk change

Bruce Rogers (1):
      move 'unsafe' to end of caching modes in help

Christoph Hellwig (1):
      block: default to 0 minimal / optiomal I/O size

Stefan Weil (1):
      block: Use error codes from lower levels for error message

Yoshiaki Tamura (1):
      block migration: propagate return value when bdrv_write() returns < 0

 block-migration.c |    6 +++++-
 block.c           |   32 ++++++++++++++++++++++++--------
 block.h           |    1 +
 block_int.h       |    4 ++--
 blockdev.c        |    1 +
 hw/ide/core.c     |   15 +++++++++++++++
 hw/virtio-blk.c   |    8 ++++++++
 hw/virtio-pci.c   |    1 +
 hw/virtio.h       |    1 +
 qemu-options.hx   |    2 +-
 10 files changed, 59 insertions(+), 12 deletions(-)

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2019-03-09 20:55 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-08 16:53 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi
2019-03-08 16:53 ` [Qemu-devel] [PULL 1/7] MAINTAINERS: add missing support status fields Stefan Hajnoczi
2019-03-08 16:53 ` [Qemu-devel] [PULL 2/7] hw/block/virtio-blk: Clean req->dev repetitions Stefan Hajnoczi
2019-03-08 16:53 ` [Qemu-devel] [PULL 3/7] iothread: replace init_done_cond with a semaphore Stefan Hajnoczi
2019-03-08 16:53 ` [Qemu-devel] [PULL 4/7] iothread: create the gcontext unconditionally Stefan Hajnoczi
2019-03-08 16:53 ` [Qemu-devel] [PULL 5/7] iothread: create main loop unconditionally Stefan Hajnoczi
2019-03-08 16:53 ` [Qemu-devel] [PULL 6/7] iothread: push gcontext earlier in the thread_fn Stefan Hajnoczi
2019-03-08 16:53 ` [Qemu-devel] [PULL 7/7] iothread: document about why we need explicit aio_poll() Stefan Hajnoczi
2019-03-09 20:55 ` [Qemu-devel] [PULL 0/7] Block patches Peter Maydell
  -- strict thread matches above, loose matches on Subject: below --
2018-03-09 13:19 Stefan Hajnoczi
2018-03-09 18:49 ` Peter Maydell
2017-06-30 11:46 Stefan Hajnoczi
2017-06-30 13:58 ` Peter Maydell
2016-09-28 18:15 Stefan Hajnoczi
2016-09-28 22:02 ` Peter Maydell
2015-11-06 17:52 Stefan Hajnoczi
2015-11-06 18:07 ` Peter Maydell
2015-11-09  2:00   ` Fam Zheng
2015-11-09  7:35     ` Markus Armbruster
2015-11-09 10:01       ` Stefan Hajnoczi
2015-09-25 15:50 Jeff Cody
2015-09-25 19:21 ` Peter Maydell
2015-04-30 19:10 Kevin Wolf
2015-05-01  8:59 ` Peter Maydell
2013-10-18 14:18 Stefan Hajnoczi
2013-06-17 16:31 Kevin Wolf
2013-06-17 21:17 ` Anthony Liguori
2010-07-26 14:01 Kevin Wolf

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.