From: Kevin Wolf <kwolf@redhat.com>
To: qemu-block@nongnu.org
Cc: kwolf@redhat.com, qemu-devel@nongnu.org
Subject: [PULL 12/18] vduse-blk: Add vduse-blk resize support
Date: Thu, 9 Jun 2022 19:21:43 +0200 [thread overview]
Message-ID: <20220609172149.293877-13-kwolf@redhat.com> (raw)
In-Reply-To: <20220609172149.293877-1-kwolf@redhat.com>
From: Xie Yongji <xieyongji@bytedance.com>
To support block resize, this uses vduse_dev_update_config()
to update the capacity field in configuration space and inject
config interrupt on the block resize callback.
Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20220523084611.91-8-xieyongji@bytedance.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
block/export/vduse-blk.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/block/export/vduse-blk.c b/block/export/vduse-blk.c
index 143d58a3f2..1040130f52 100644
--- a/block/export/vduse-blk.c
+++ b/block/export/vduse-blk.c
@@ -184,6 +184,23 @@ static void blk_aio_detach(void *opaque)
vblk_exp->export.ctx = NULL;
}
+static void vduse_blk_resize(void *opaque)
+{
+ BlockExport *exp = opaque;
+ VduseBlkExport *vblk_exp = container_of(exp, VduseBlkExport, export);
+ struct virtio_blk_config config;
+
+ config.capacity =
+ cpu_to_le64(blk_getlength(exp->blk) >> VIRTIO_BLK_SECTOR_BITS);
+ vduse_dev_update_config(vblk_exp->dev, sizeof(config.capacity),
+ offsetof(struct virtio_blk_config, capacity),
+ (char *)&config.capacity);
+}
+
+static const BlockDevOps vduse_block_ops = {
+ .resize_cb = vduse_blk_resize,
+};
+
static int vduse_blk_exp_create(BlockExport *exp, BlockExportOptions *opts,
Error **errp)
{
@@ -279,6 +296,8 @@ static int vduse_blk_exp_create(BlockExport *exp, BlockExportOptions *opts,
blk_add_aio_context_notifier(exp->blk, blk_aio_attached, blk_aio_detach,
vblk_exp);
+ blk_set_dev_ops(exp->blk, &vduse_block_ops, exp);
+
return 0;
}
@@ -288,6 +307,7 @@ static void vduse_blk_exp_delete(BlockExport *exp)
blk_remove_aio_context_notifier(exp->blk, blk_aio_attached, blk_aio_detach,
vblk_exp);
+ blk_set_dev_ops(exp->blk, NULL, NULL);
vduse_dev_destroy(vblk_exp->dev);
}
--
2.35.3
next prev parent reply other threads:[~2022-06-09 18:49 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-09 17:21 [PULL 00/18] Block layer patches Kevin Wolf
2022-06-09 17:21 ` [PULL 01/18] block: drop unused bdrv_co_drain() API Kevin Wolf
2022-06-09 17:21 ` [PULL 02/18] block: get rid of blk->guest_block_size Kevin Wolf
2022-06-09 17:21 ` [PULL 03/18] block: block_dirty_bitmap_merge(): fix error path Kevin Wolf
2022-06-09 17:21 ` [PULL 04/18] block: improve block_dirty_bitmap_merge(): don't allocate extra bitmap Kevin Wolf
2022-06-09 17:21 ` [PULL 05/18] block: simplify handling of try to merge different sized bitmaps Kevin Wolf
2022-06-09 17:21 ` [PULL 06/18] block: Support passing NULL ops to blk_set_dev_ops() Kevin Wolf
2022-06-09 17:21 ` [PULL 07/18] block/export: Fix incorrect length passed to vu_queue_push() Kevin Wolf
2022-06-09 17:21 ` [PULL 08/18] block/export: Abstract out the logic of virtio-blk I/O process Kevin Wolf
2022-06-09 17:21 ` [PULL 09/18] linux-headers: Add vduse.h Kevin Wolf
2022-06-09 17:21 ` [PULL 10/18] libvduse: Add VDUSE (vDPA Device in Userspace) library Kevin Wolf
2022-06-09 17:21 ` [PULL 11/18] vduse-blk: Implement vduse-blk export Kevin Wolf
2022-06-09 17:21 ` Kevin Wolf [this message]
2022-06-09 17:21 ` [PULL 13/18] libvduse: Add support for reconnecting Kevin Wolf
2022-06-09 17:21 ` [PULL 14/18] qsd: document vduse-blk exports Kevin Wolf
2022-06-09 17:21 ` [PULL 15/18] block/rbd: report a better error when namespace does not exist Kevin Wolf
2022-06-09 17:21 ` [PULL 16/18] block/gluster: correctly set max_pdiscard Kevin Wolf
2022-06-09 17:21 ` [PULL 17/18] aio_wait_kick: add missing memory barrier Kevin Wolf
2022-06-09 17:21 ` [PULL 18/18] nbd: Drop dead code spotted by Coverity Kevin Wolf
2022-06-09 20:18 ` [PULL 00/18] Block layer patches Richard Henderson
2022-06-13 17:04 ` Kevin Wolf
2022-06-14 5:19 ` Yongji Xie
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=20220609172149.293877-13-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.