On Mon, Feb 7, 2022 at 10:18 PM Stefan Hajnoczi <stefa...@redhat.com> wrote: > > On Tue, Jan 25, 2022 at 09:17:59PM +0800, Xie Yongji wrote: > > 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 <xieyon...@bytedance.com> > > --- > > block/export/vduse-blk.c | 19 +++++++++++++++++++ > > 1 file changed, 19 insertions(+) > > > > diff --git a/block/export/vduse-blk.c b/block/export/vduse-blk.c > > index 5a8d289685..83845e9a9a 100644 > > --- a/block/export/vduse-blk.c > > +++ b/block/export/vduse-blk.c > > @@ -297,6 +297,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) > > { > > @@ -387,6 +404,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); > > Detach is missing, so BlockBackend->dev_ops will become stale after the > export is deleted. Please add code to detach when the export is deleted.
OK. Thanks, Yongji