Accepting request 621214 from home:bfrogers:branches:Virtualization

- Tweak build service constraints information to avoid failures
- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-2.12
* Patches added:
  0067-xen-add-block-resize-support-for-xe.patch
- Fix build failure of skiboot with gcc8 compiler
  skiboot-hdata-i2c.c-fix-building-with-gcc8.patch
- Tweak build service constraints information to avoid failures
- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-2.12
* Patches added:
  0067-xen-add-block-resize-support-for-xe.patch
- Fix build failure of skiboot with gcc8 compiler
  skiboot-hdata-i2c.c-fix-building-with-gcc8.patch
- Tweak build service constraints information to avoid failures
- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-2.12
* Patches added:
  0067-xen-add-block-resize-support-for-xe.patch

OBS-URL: https://build.opensuse.org/request/show/621214
OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=415
This commit is contained in:
Bruce Rogers 2018-07-05 20:55:09 +00:00 committed by Git OBS Bridge
parent be298668b3
commit 390170a303
10 changed files with 282 additions and 0 deletions

View File

@ -0,0 +1,186 @@
From 65cf4933f17a0b7a1a684c3ebfc86ce334c33859 Mon Sep 17 00:00:00 2001
From: Bruce Rogers <brogers@suse.com>
Date: Fri, 8 Jun 2018 11:04:36 -0600
Subject: [PATCH] xen: add block resize support for xen disks
Provide monitor naming of xen disks, and plumb guest driver
notification through xenstore of resizing instigated via the
monitor.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
block/block-backend.c | 12 +++++++++++-
blockdev.c | 8 ++++++++
hw/block/xen_disk.c | 24 ++++++++++++++++++++++++
include/hw/xen/xen.h | 4 ++++
include/sysemu/block-backend.h | 2 ++
stubs/xen-common.c | 9 +++++++++
6 files changed, 58 insertions(+), 1 deletion(-)
diff --git a/block/block-backend.c b/block/block-backend.c
index 681b240b12..7f4f803c5b 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"
/* 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;
- assert(!blk->legacy_dev);
+ if (blk->legacy_dev) {
+ return xen_blk_get_attached_dev_id(blk->dev);
+ }
dev = blk->dev;
if (!dev) {
@@ -2006,6 +2009,13 @@ int blk_truncate(BlockBackend *blk, int64_t offset, PreallocMode prealloc,
return bdrv_truncate(blk->root, offset, prealloc, errp);
}
+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 = opaque;
diff --git a/blockdev.c b/blockdev.c
index c31bf3d98d..7aa158868b 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3014,6 +3014,7 @@ void qmp_block_resize(bool has_device, const char *device,
{
Error *local_err = NULL;
BlockBackend *blk = NULL;
+ BlockBackend *cb_blk = NULL;
BlockDriverState *bs;
AioContext *aio_context;
int ret;
@@ -3026,6 +3027,10 @@ void qmp_block_resize(bool has_device, const char *device,
return;
}
+ if (has_device) {
+ cb_blk = blk_by_name(device);
+ }
+
aio_context = bdrv_get_aio_context(bs);
aio_context_acquire(aio_context);
@@ -3052,6 +3057,9 @@ void qmp_block_resize(bool has_device, const char *device,
bdrv_drained_begin(bs);
ret = blk_truncate(blk, size, PREALLOC_MODE_OFF, errp);
+ if (!ret && cb_blk) {
+ blk_legacy_resize_cb(cb_blk);
+ }
bdrv_drained_end(bs);
out:
diff --git a/hw/block/xen_disk.c b/hw/block/xen_disk.c
index 1696382f36..faa40239c0 100644
--- a/hw/block/xen_disk.c
+++ b/hw/block/xen_disk.c
@@ -1098,6 +1098,7 @@ static int blk_connect(struct XenDevice *xendev)
unsigned int ring_size, max_grants;
unsigned int i;
uint32_t *domids;
+ Error *errp = NULL;
trace_xen_disk_connect(xendev->name);
@@ -1157,6 +1158,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 = blk_getlength(blkdev->blk);
if (blkdev->file_size < 0) {
BlockDriverState *bs = blk_bs(blkdev->blk);
@@ -1351,6 +1359,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 = NULL;
}
@@ -1424,6 +1433,21 @@ static void blk_event(struct XenDevice *xendev)
qemu_bh_schedule(blkdev->bh);
}
+void xen_blk_resize_cb(void *dev)
+{
+ struct XenBlkDev *blkdev = dev;
+ blkdev->file_size = 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);
+}
+
+char *xen_blk_get_attached_dev_id(void *dev)
+{
+ struct XenBlkDev *blkdev = dev;
+ return g_strdup_printf("xen-qdisk-%i", blkdev->xendev.dev);
+}
+
struct XenDevOps xen_blkdev_ops = {
.size = sizeof(struct XenBlkDev),
.alloc = blk_alloc,
diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h
index 7efcdaa8fe..45c8c0b6f7 100644
--- a/include/hw/xen/xen.h
+++ b/include/hw/xen/xen.h
@@ -48,4 +48,8 @@ void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length);
void xen_register_framebuffer(struct MemoryRegion *mr);
+void xen_blk_resize_cb(void *dev);
+
+char *xen_blk_get_attached_dev_id(void *dev);
+
#endif /* QEMU_HW_XEN_H */
diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h
index 92ab624fac..9565dbaf97 100644
--- a/include/sysemu/block-backend.h
+++ b/include/sysemu/block-backend.h
@@ -232,4 +232,6 @@ void blk_set_force_allow_inactivate(BlockBackend *blk);
void blk_register_buf(BlockBackend *blk, void *host, size_t size);
void blk_unregister_buf(BlockBackend *blk, void *host);
+void blk_legacy_resize_cb(BlockBackend *blk);
+
#endif
diff --git a/stubs/xen-common.c b/stubs/xen-common.c
index 09fce2dd36..91542fc019 100644
--- a/stubs/xen-common.c
+++ b/stubs/xen-common.c
@@ -12,3 +12,12 @@
void xenstore_store_pv_console_info(int i, Chardev *chr)
{
}
+
+void xen_blk_resize_cb(void *dev)
+{
+}
+
+char *xen_blk_get_attached_dev_id(void *dev)
+{
+ return g_strdup("");
+}

View File

@ -13,6 +13,7 @@
<conditions>
<arch>ppc64</arch>
<arch>ppc64le</arch>
<arch>s390x</arch>
<package>qemu</package>
</conditions>
<hardware>

View File

@ -1,3 +1,15 @@
-------------------------------------------------------------------
Thu Jul 5 15:22:40 UTC 2018 - brogers@suse.com
- Tweak build service constraints information to avoid failures
-------------------------------------------------------------------
Fri Jun 8 20:28:41 UTC 2018 - brogers@suse.com
- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-2.12
* Patches added:
0067-xen-add-block-resize-support-for-xe.patch
-------------------------------------------------------------------
Thu Jun 7 14:57:31 UTC 2018 - brogers@suse.com

View File

@ -92,6 +92,7 @@ Patch0063: 0063-i386-Define-the-Virt-SSBD-MSR-and-h.patch
Patch0064: 0064-i386-define-the-AMD-virt-ssbd-CPUID.patch
Patch0065: 0065-ahci-fix-PxCI-register-race.patch
Patch0066: 0066-ccid-card-passthru-fix-regression-i.patch
Patch0067: 0067-xen-add-block-resize-support-for-xe.patch
# Please do not add QEMU patches manually here.
# Run update_git.sh to regenerate this queue.
Source400: update_git.sh
@ -191,6 +192,7 @@ syscall layer occurs on the native hardware and operating system.
%patch0064 -p1
%patch0065 -p1
%patch0066 -p1
%patch0067 -p1
%build
./configure \

View File

@ -1,3 +1,21 @@
-------------------------------------------------------------------
Thu Jul 5 17:21:43 UTC 2018 - brogers@suse.com
- Fix build failure of skiboot with gcc8 compiler
skiboot-hdata-i2c.c-fix-building-with-gcc8.patch
-------------------------------------------------------------------
Thu Jul 5 15:22:19 UTC 2018 - brogers@suse.com
- Tweak build service constraints information to avoid failures
-------------------------------------------------------------------
Fri Jun 8 20:28:37 UTC 2018 - brogers@suse.com
- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-2.12
* Patches added:
0067-xen-add-block-resize-support-for-xe.patch
-------------------------------------------------------------------
Thu Jun 7 14:57:31 UTC 2018 - brogers@suse.com

View File

@ -196,6 +196,7 @@ Patch0063: 0063-i386-Define-the-Virt-SSBD-MSR-and-h.patch
Patch0064: 0064-i386-define-the-AMD-virt-ssbd-CPUID.patch
Patch0065: 0065-ahci-fix-PxCI-register-race.patch
Patch0066: 0066-ccid-card-passthru-fix-regression-i.patch
Patch0067: 0067-xen-add-block-resize-support-for-xe.patch
# Please do not add QEMU patches manually here.
# Run update_git.sh to regenerate this queue.
@ -220,6 +221,7 @@ Patch1300: sgabios-stable-buildid.patch
# SLOF (Currently no patches)
# skiboot (Currently no patches)
Patch1500: skiboot-hdata-i2c.c-fix-building-with-gcc8.patch
# ui/keycodemapdb (Currently no patches)
@ -930,6 +932,7 @@ This package provides a service file for starting and stopping KSM.
%patch0064 -p1
%patch0065 -p1
%patch0066 -p1
%patch0067 -p1
%if 0%{?suse_version} > 1320
%patch1000 -p1
@ -958,6 +961,7 @@ pushd roms/SLOF
popd
pushd roms/skiboot
%patch1500 -p1
popd
pushd ui/keycodemapdb

View File

@ -1,3 +1,21 @@
-------------------------------------------------------------------
Thu Jul 5 17:21:43 UTC 2018 - brogers@suse.com
- Fix build failure of skiboot with gcc8 compiler
skiboot-hdata-i2c.c-fix-building-with-gcc8.patch
-------------------------------------------------------------------
Thu Jul 5 15:22:19 UTC 2018 - brogers@suse.com
- Tweak build service constraints information to avoid failures
-------------------------------------------------------------------
Fri Jun 8 20:28:37 UTC 2018 - brogers@suse.com
- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-2.12
* Patches added:
0067-xen-add-block-resize-support-for-xe.patch
-------------------------------------------------------------------
Thu Jun 7 14:57:31 UTC 2018 - brogers@suse.com

View File

@ -196,6 +196,7 @@ Patch0063: 0063-i386-Define-the-Virt-SSBD-MSR-and-h.patch
Patch0064: 0064-i386-define-the-AMD-virt-ssbd-CPUID.patch
Patch0065: 0065-ahci-fix-PxCI-register-race.patch
Patch0066: 0066-ccid-card-passthru-fix-regression-i.patch
Patch0067: 0067-xen-add-block-resize-support-for-xe.patch
# Please do not add QEMU patches manually here.
# Run update_git.sh to regenerate this queue.
@ -220,6 +221,7 @@ Patch1300: sgabios-stable-buildid.patch
# SLOF (Currently no patches)
# skiboot (Currently no patches)
Patch1500: skiboot-hdata-i2c.c-fix-building-with-gcc8.patch
# ui/keycodemapdb (Currently no patches)
@ -930,6 +932,7 @@ This package provides a service file for starting and stopping KSM.
%patch0064 -p1
%patch0065 -p1
%patch0066 -p1
%patch0067 -p1
%if 0%{?suse_version} > 1320
%patch1000 -p1
@ -958,6 +961,7 @@ pushd roms/SLOF
popd
pushd roms/skiboot
%patch1500 -p1
popd
pushd ui/keycodemapdb

View File

@ -156,6 +156,7 @@ Patch1300: sgabios-stable-buildid.patch
# SLOF (Currently no patches)
# skiboot (Currently no patches)
Patch1500: skiboot-hdata-i2c.c-fix-building-with-gcc8.patch
# ui/keycodemapdb (Currently no patches)
@ -829,6 +830,7 @@ pushd roms/SLOF
popd
pushd roms/skiboot
%patch1500 -p1
popd
pushd ui/keycodemapdb

View File

@ -0,0 +1,35 @@
From 70d544de8739abbc381398cbfd07a6bd6dc8c1a5 Mon Sep 17 00:00:00 2001
From: Stewart Smith <stewart@linux.ibm.com>
Date: Tue, 29 May 2018 14:54:10 +1000
Subject: [PATCH] hdata/i2c.c: fix building with gcc8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
hdata/test/../i2c.c:200:1: error: alignment 1 of struct host_i2c_hdr is less than 4 [-Werror=packed-not-aligned]
} __packed;
^
Fixes: https://github.com/open-power/skiboot/issues/160
Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
hdata/i2c.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hdata/i2c.c b/hdata/i2c.c
index 5cb56faf..9bbec665 100644
--- a/hdata/i2c.c
+++ b/hdata/i2c.c
@@ -197,7 +197,7 @@ static bool is_zeros(const void *p, size_t size)
struct host_i2c_hdr {
const struct HDIF_array_hdr hdr;
__be32 version;
-} __packed;
+} __packed __align(0x4);
int parse_i2c_devs(const struct HDIF_common_hdr *hdr, int idata_index,
struct dt_node *xscom)
--
2.18.0