From nobody Fri Apr 26 23:13:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1528847602135581.5810118683296; Tue, 12 Jun 2018 16:53:22 -0700 (PDT) Received: from localhost ([::1]:58909 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fSt6A-0002Vn-En for importer@patchew.org; Tue, 12 Jun 2018 19:53:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55465) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fSt4Y-0001j3-Ae for qemu-devel@nongnu.org; Tue, 12 Jun 2018 19:51:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fSt4X-0006Y1-9B for qemu-devel@nongnu.org; Tue, 12 Jun 2018 19:51:34 -0400 Received: from inet-orm.provo.novell.com ([137.65.248.124]:35071 helo=mail.novell.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fSt4Q-0006VR-VE; Tue, 12 Jun 2018 19:51:27 -0400 Received: from brogers1.provo.novell.com (brogers1.dnsdhcp.provo.novell.com [137.65.133.7]) by mail.novell.com with ESMTP (NOT encrypted); Tue, 12 Jun 2018 17:51:09 -0600 From: Bruce Rogers To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Tue, 12 Jun 2018 17:51:02 -0600 Message-Id: <20180612235103.12633-2-brogers@suse.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180612235103.12633-1-brogers@suse.com> References: <20180612235103.12633-1-brogers@suse.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 137.65.248.124 Subject: [Qemu-devel] [PATCH 1/2] xen: add xen disk naming for use in monitor X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, sstabellini@kernel.org, armbru@redhat.com, Bruce Rogers , anthony.perard@citrix.com, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Provide monitor naming of xen disks, including associating an attached dev_id for a BlockBackend which has legacy_dev set. Currently, only xen disks have legacy_dev set to true. Signed-off-by: Bruce Rogers --- block/block-backend.c | 5 ++++- hw/block/xen_disk.c | 15 +++++++++++++++ include/hw/xen/xen.h | 2 ++ stubs/xen-common.c | 5 +++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/block/block-backend.c b/block/block-backend.c index d55c328736..db39dfe867 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -23,6 +23,7 @@ #include "qemu/option.h" #include "trace.h" #include "migration/misc.h" +#include "hw/xen/xen.h" =20 /* Number of coroutines to reserve per attached device model */ #define COROUTINE_POOL_RESERVATION 64 @@ -895,7 +896,9 @@ char *blk_get_attached_dev_id(BlockBackend *blk) { DeviceState *dev; =20 - assert(!blk->legacy_dev); + if (blk->legacy_dev) { + return xen_blk_get_attached_dev_id(blk->dev); + } dev =3D blk->dev; =20 if (!dev) { diff --git a/hw/block/xen_disk.c b/hw/block/xen_disk.c index 9fbc0cdb87..fca0597d36 100644 --- a/hw/block/xen_disk.c +++ b/hw/block/xen_disk.c @@ -745,6 +745,7 @@ static int blk_connect(struct XenDevice *xendev) int order, ring_ref; unsigned int ring_size, max_grants; unsigned int i; + Error *errp =3D NULL; =20 trace_xen_disk_connect(xendev->name); =20 @@ -801,6 +802,13 @@ static int blk_connect(struct XenDevice *xendev) blk_ref(blkdev->blk); } blk_attach_dev_legacy(blkdev->blk, blkdev); + if (!monitor_add_blk(blkdev->blk, g_strdup(blkdev->dev), &errp)) { + xen_pv_printf(&blkdev->xendev, 0, "error: %s\n", + error_get_pretty(errp)); + error_free(errp); + return -1; + } + blkdev->file_size =3D blk_getlength(blkdev->blk); if (blkdev->file_size < 0) { BlockDriverState *bs =3D blk_bs(blkdev->blk); @@ -951,6 +959,7 @@ static void blk_disconnect(struct XenDevice *xendev) if (blkdev->blk) { blk_set_aio_context(blkdev->blk, qemu_get_aio_context()); blk_detach_dev(blkdev->blk, blkdev); + monitor_remove_blk(blkdev->blk); blk_unref(blkdev->blk); blkdev->blk =3D NULL; } @@ -998,6 +1007,12 @@ static void blk_event(struct XenDevice *xendev) qemu_bh_schedule(blkdev->bh); } =20 +char *xen_blk_get_attached_dev_id(void *dev) +{ + struct XenBlkDev *blkdev =3D dev; + return g_strdup_printf("xen-qdisk-%i", blkdev->xendev.dev); +} + struct XenDevOps xen_blkdev_ops =3D { .flags =3D DEVOPS_FLAG_NEED_GNTDEV, .size =3D sizeof(struct XenBlkDev), diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h index 7efcdaa8fe..a201517675 100644 --- a/include/hw/xen/xen.h +++ b/include/hw/xen/xen.h @@ -48,4 +48,6 @@ void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t= length); =20 void xen_register_framebuffer(struct MemoryRegion *mr); =20 +char *xen_blk_get_attached_dev_id(void *dev); + #endif /* QEMU_HW_XEN_H */ diff --git a/stubs/xen-common.c b/stubs/xen-common.c index 09fce2dd36..aeac0534ac 100644 --- a/stubs/xen-common.c +++ b/stubs/xen-common.c @@ -12,3 +12,8 @@ void xenstore_store_pv_console_info(int i, Chardev *chr) { } + +char *xen_blk_get_attached_dev_id(void *dev) +{ + return g_strdup(""); +} --=20 2.17.1 From nobody Fri Apr 26 23:13:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1528847685744659.6267939243231; Tue, 12 Jun 2018 16:54:45 -0700 (PDT) Received: from localhost ([::1]:58916 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fSt7Z-0003Ts-QD for importer@patchew.org; Tue, 12 Jun 2018 19:54:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55472) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fSt4Y-0001jL-Mj for qemu-devel@nongnu.org; Tue, 12 Jun 2018 19:51:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fSt4X-0006YD-Jf for qemu-devel@nongnu.org; Tue, 12 Jun 2018 19:51:34 -0400 Received: from inet-orm.provo.novell.com ([137.65.248.124]:34843 helo=mail.novell.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fSt4R-0006Vf-7t; Tue, 12 Jun 2018 19:51:27 -0400 Received: from brogers1.provo.novell.com (brogers1.dnsdhcp.provo.novell.com [137.65.133.7]) by mail.novell.com with ESMTP (NOT encrypted); Tue, 12 Jun 2018 17:51:09 -0600 From: Bruce Rogers To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Tue, 12 Jun 2018 17:51:03 -0600 Message-Id: <20180612235103.12633-3-brogers@suse.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180612235103.12633-1-brogers@suse.com> References: <20180612235103.12633-1-brogers@suse.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 137.65.248.124 Subject: [Qemu-devel] [PATCH 2/2] xen: add block resize support for xen disks X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, sstabellini@kernel.org, armbru@redhat.com, Bruce Rogers , anthony.perard@citrix.com, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" In the context of a monitor based disk resize, provide notification of the new size to the front end xen block driver via a xenstore update. Signed-off-by: Bruce Rogers --- block/block-backend.c | 7 +++++++ blockdev.c | 8 ++++++++ hw/block/xen_disk.c | 9 +++++++++ include/hw/xen/xen.h | 2 ++ include/sysemu/block-backend.h | 2 ++ stubs/xen-common.c | 4 ++++ 6 files changed, 32 insertions(+) diff --git a/block/block-backend.c b/block/block-backend.c index db39dfe867..e1b0db8363 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -2003,6 +2003,13 @@ int blk_truncate(BlockBackend *blk, int64_t offset, = PreallocMode prealloc, return bdrv_truncate(blk->root, offset, prealloc, errp); } =20 +void blk_legacy_resize_cb(BlockBackend *blk) +{ + if (blk->legacy_dev) { + xen_blk_resize_cb(blk->dev); + } +} + static void blk_pdiscard_entry(void *opaque) { BlkRwCo *rwco =3D opaque; diff --git a/blockdev.c b/blockdev.c index 4862323012..4dd34ad424 100644 --- a/blockdev.c +++ b/blockdev.c @@ -3174,6 +3174,7 @@ void qmp_block_resize(bool has_device, const char *de= vice, { Error *local_err =3D NULL; BlockBackend *blk =3D NULL; + BlockBackend *cb_blk =3D NULL; BlockDriverState *bs; AioContext *aio_context; int ret; @@ -3186,6 +3187,10 @@ void qmp_block_resize(bool has_device, const char *d= evice, return; } =20 + if (has_device) { + cb_blk =3D blk_by_name(device); + } + aio_context =3D bdrv_get_aio_context(bs); aio_context_acquire(aio_context); =20 @@ -3212,6 +3217,9 @@ void qmp_block_resize(bool has_device, const char *de= vice, =20 bdrv_drained_begin(bs); ret =3D blk_truncate(blk, size, PREALLOC_MODE_OFF, errp); + if (!ret && cb_blk) { + blk_legacy_resize_cb(cb_blk); + } bdrv_drained_end(bs); =20 out: diff --git a/hw/block/xen_disk.c b/hw/block/xen_disk.c index fca0597d36..e69c7f590c 100644 --- a/hw/block/xen_disk.c +++ b/hw/block/xen_disk.c @@ -1013,6 +1013,15 @@ char *xen_blk_get_attached_dev_id(void *dev) return g_strdup_printf("xen-qdisk-%i", blkdev->xendev.dev); } =20 +void xen_blk_resize_cb(void *dev) +{ + struct XenBlkDev *blkdev =3D dev; + blkdev->file_size =3D blk_getlength(blkdev->blk); + xenstore_write_be_int64(&blkdev->xendev, "sectors", + blkdev->file_size / blkdev->file_blk); + xen_be_set_state(&blkdev->xendev, blkdev->xendev.be_state); +} + struct XenDevOps xen_blkdev_ops =3D { .flags =3D DEVOPS_FLAG_NEED_GNTDEV, .size =3D sizeof(struct XenBlkDev), diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h index a201517675..d923ae53f1 100644 --- a/include/hw/xen/xen.h +++ b/include/hw/xen/xen.h @@ -50,4 +50,6 @@ void xen_register_framebuffer(struct MemoryRegion *mr); =20 char *xen_blk_get_attached_dev_id(void *dev); =20 +void xen_blk_resize_cb(void *dev); + #endif /* QEMU_HW_XEN_H */ diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h index 8d03d493c2..0ccaf5b035 100644 --- a/include/sysemu/block-backend.h +++ b/include/sysemu/block-backend.h @@ -236,4 +236,6 @@ int coroutine_fn blk_co_copy_range(BlockBackend *blk_in= , int64_t off_in, BlockBackend *blk_out, int64_t off_out, int bytes, BdrvRequestFlags flags); =20 +void blk_legacy_resize_cb(BlockBackend *blk); + #endif diff --git a/stubs/xen-common.c b/stubs/xen-common.c index aeac0534ac..c2cbf81a87 100644 --- a/stubs/xen-common.c +++ b/stubs/xen-common.c @@ -17,3 +17,7 @@ char *xen_blk_get_attached_dev_id(void *dev) { return g_strdup(""); } + +void xen_blk_resize_cb(void *dev) +{ +} --=20 2.17.1