qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/2] block: support block_resize with dataplane
@ 2014-08-18 13:52 Stefan Hajnoczi
  2014-08-18 13:52 ` [Qemu-devel] [PATCH 1/2] block: acquire AioContext in qmp_block_resize() Stefan Hajnoczi
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Stefan Hajnoczi @ 2014-08-18 13:52 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf, Andrey Korolyov, Stefan Hajnoczi, Max Reitz

We have the op blocker and AioContext acquire/release infrastructure to safely
allow block monitor commands on dataplane commands.  It is now easy to make
block_resize safe.

Stefan Hajnoczi (2):
  block: acquire AioContext in qmp_block_resize()
  virtio-blk: allow block_resize with dataplane

 blockdev.c                      | 13 ++++++++++---
 hw/block/dataplane/virtio-blk.c |  1 +
 2 files changed, 11 insertions(+), 3 deletions(-)

-- 
1.9.3

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

* [Qemu-devel] [PATCH 1/2] block: acquire AioContext in qmp_block_resize()
  2014-08-18 13:52 [Qemu-devel] [PATCH 0/2] block: support block_resize with dataplane Stefan Hajnoczi
@ 2014-08-18 13:52 ` Stefan Hajnoczi
  2014-08-18 15:54   ` Max Reitz
  2014-08-18 13:52 ` [Qemu-devel] [PATCH 2/2] virtio-blk: allow block_resize with dataplane Stefan Hajnoczi
  2014-08-20  9:54 ` [Qemu-devel] [PATCH 0/2] block: support " Kevin Wolf
  2 siblings, 1 reply; 6+ messages in thread
From: Stefan Hajnoczi @ 2014-08-18 13:52 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf, Andrey Korolyov, Stefan Hajnoczi, Max Reitz

Make block_resize safe for dataplane where another thread may be running
the BlockDriverState's AioContext.

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

diff --git a/blockdev.c b/blockdev.c
index 48bd9a3..197b799 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -1799,6 +1799,7 @@ void qmp_block_resize(bool has_device, const char *device,
 {
     Error *local_err = NULL;
     BlockDriverState *bs;
+    AioContext *aio_context;
     int ret;
 
     bs = bdrv_lookup_bs(has_device ? device : NULL,
@@ -1809,19 +1810,22 @@ void qmp_block_resize(bool has_device, const char *device,
         return;
     }
 
+    aio_context = bdrv_get_aio_context(bs);
+    aio_context_acquire(aio_context);
+
     if (!bdrv_is_first_non_filter(bs)) {
         error_set(errp, QERR_FEATURE_DISABLED, "resize");
-        return;
+        goto out;
     }
 
     if (size < 0) {
         error_set(errp, QERR_INVALID_PARAMETER_VALUE, "size", "a >0 size");
-        return;
+        goto out;
     }
 
     if (bdrv_op_is_blocked(bs, BLOCK_OP_TYPE_RESIZE, NULL)) {
         error_set(errp, QERR_DEVICE_IN_USE, device);
-        return;
+        goto out;
     }
 
     /* complete all in-flight operations before resizing the device */
@@ -1847,6 +1851,9 @@ void qmp_block_resize(bool has_device, const char *device,
         error_setg_errno(errp, -ret, "Could not resize");
         break;
     }
+
+out:
+    aio_context_release(aio_context);
 }
 
 static void block_job_cb(void *opaque, int ret)
-- 
1.9.3

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

* [Qemu-devel] [PATCH 2/2] virtio-blk: allow block_resize with dataplane
  2014-08-18 13:52 [Qemu-devel] [PATCH 0/2] block: support block_resize with dataplane Stefan Hajnoczi
  2014-08-18 13:52 ` [Qemu-devel] [PATCH 1/2] block: acquire AioContext in qmp_block_resize() Stefan Hajnoczi
@ 2014-08-18 13:52 ` Stefan Hajnoczi
  2014-08-18 15:54   ` Max Reitz
  2014-08-20  9:54 ` [Qemu-devel] [PATCH 0/2] block: support " Kevin Wolf
  2 siblings, 1 reply; 6+ messages in thread
From: Stefan Hajnoczi @ 2014-08-18 13:52 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf, Andrey Korolyov, Stefan Hajnoczi, Max Reitz

Now that block_resize acquires the AioContext we can safely allow
resizing the disk.

Reported-by: Andrey Korolyov <andrey@xdel.ru>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 hw/block/dataplane/virtio-blk.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c
index d6ba65c..b042caf 100644
--- a/hw/block/dataplane/virtio-blk.c
+++ b/hw/block/dataplane/virtio-blk.c
@@ -192,6 +192,7 @@ void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *blk,
 
     error_setg(&s->blocker, "block device is in use by data plane");
     bdrv_op_block_all(blk->conf.bs, s->blocker);
+    bdrv_op_unblock(blk->conf.bs, BLOCK_OP_TYPE_RESIZE, s->blocker);
 
     *dataplane = s;
 }
-- 
1.9.3

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

* Re: [Qemu-devel] [PATCH 1/2] block: acquire AioContext in qmp_block_resize()
  2014-08-18 13:52 ` [Qemu-devel] [PATCH 1/2] block: acquire AioContext in qmp_block_resize() Stefan Hajnoczi
@ 2014-08-18 15:54   ` Max Reitz
  0 siblings, 0 replies; 6+ messages in thread
From: Max Reitz @ 2014-08-18 15:54 UTC (permalink / raw)
  To: Stefan Hajnoczi, qemu-devel; +Cc: Kevin Wolf, Andrey Korolyov

On 18.08.2014 15:52, Stefan Hajnoczi wrote:
> Make block_resize safe for dataplane where another thread may be running
> the BlockDriverState's AioContext.
>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>   blockdev.c | 13 ++++++++++---
>   1 file changed, 10 insertions(+), 3 deletions(-)

Reviewed-by: Max Reitz <mreitz@redhat.com>

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

* Re: [Qemu-devel] [PATCH 2/2] virtio-blk: allow block_resize with dataplane
  2014-08-18 13:52 ` [Qemu-devel] [PATCH 2/2] virtio-blk: allow block_resize with dataplane Stefan Hajnoczi
@ 2014-08-18 15:54   ` Max Reitz
  0 siblings, 0 replies; 6+ messages in thread
From: Max Reitz @ 2014-08-18 15:54 UTC (permalink / raw)
  To: Stefan Hajnoczi, qemu-devel; +Cc: Kevin Wolf, Andrey Korolyov

On 18.08.2014 15:52, Stefan Hajnoczi wrote:
> Now that block_resize acquires the AioContext we can safely allow
> resizing the disk.
>
> Reported-by: Andrey Korolyov <andrey@xdel.ru>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>   hw/block/dataplane/virtio-blk.c | 1 +
>   1 file changed, 1 insertion(+)

Reviewed-by: Max Reitz <mreitz@redhat.com>

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

* Re: [Qemu-devel] [PATCH 0/2] block: support block_resize with dataplane
  2014-08-18 13:52 [Qemu-devel] [PATCH 0/2] block: support block_resize with dataplane Stefan Hajnoczi
  2014-08-18 13:52 ` [Qemu-devel] [PATCH 1/2] block: acquire AioContext in qmp_block_resize() Stefan Hajnoczi
  2014-08-18 13:52 ` [Qemu-devel] [PATCH 2/2] virtio-blk: allow block_resize with dataplane Stefan Hajnoczi
@ 2014-08-20  9:54 ` Kevin Wolf
  2 siblings, 0 replies; 6+ messages in thread
From: Kevin Wolf @ 2014-08-20  9:54 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: Andrey Korolyov, qemu-devel, Max Reitz

Am 18.08.2014 um 15:52 hat Stefan Hajnoczi geschrieben:
> We have the op blocker and AioContext acquire/release infrastructure to safely
> allow block monitor commands on dataplane commands.  It is now easy to make
> block_resize safe.
> 
> Stefan Hajnoczi (2):
>   block: acquire AioContext in qmp_block_resize()
>   virtio-blk: allow block_resize with dataplane
> 
>  blockdev.c                      | 13 ++++++++++---
>  hw/block/dataplane/virtio-blk.c |  1 +
>  2 files changed, 11 insertions(+), 3 deletions(-)

Thanks, applied all to the block branch.

Kevin

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

end of thread, other threads:[~2014-08-20  9:54 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-18 13:52 [Qemu-devel] [PATCH 0/2] block: support block_resize with dataplane Stefan Hajnoczi
2014-08-18 13:52 ` [Qemu-devel] [PATCH 1/2] block: acquire AioContext in qmp_block_resize() Stefan Hajnoczi
2014-08-18 15:54   ` Max Reitz
2014-08-18 13:52 ` [Qemu-devel] [PATCH 2/2] virtio-blk: allow block_resize with dataplane Stefan Hajnoczi
2014-08-18 15:54   ` Max Reitz
2014-08-20  9:54 ` [Qemu-devel] [PATCH 0/2] block: support " Kevin Wolf

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).