On Wed, Feb 13, 2019 at 04:01:43PM +0800, Stefan Hajnoczi wrote: > On Wed, Feb 13, 2019 at 09:48:57AM +0800, Changpeng Liu wrote: > > Commit caa1ee43 "vhost-user-blk: add discard/write zeroes features > > support" added fields to struct virtio_blk_config. This changes > > the size of the config space and breaks migration from QEMU 3.1 > > and older: > > > > qemu-system-ppc64: get_pci_config_device: Bad config data: i=0x10 read: 41 > > device: 1 cmask: ff wmask: 80 w1cmask:0 > > qemu-system-ppc64: Failed to load PCIDevice:config > > qemu-system-ppc64: Failed to load virtio-blk:virtio > > qemu-system-ppc64: error while loading state for instance 0x0 of device > > 'pci@800000020000000:01.0/virtio-blk' > > qemu-system-ppc64: load of migration failed: Invalid argument > > > > Since virtio-blk doesn't support the "discard" and "write zeroes" > > features, it shouldn't even expose the associated fields in the > > config space actually. Just include all fields up to num_queues to > > match QEMU 3.1 and older. > > > > Signed-off-by: Changpeng Liu <changpeng....@intel.com> > > --- > > hw/block/virtio-blk.c | 13 +++++++++---- > > 1 file changed, 9 insertions(+), 4 deletions(-) > > Stefano: Please rebase your DISCARD/WRITE_ZEROES series onto this and > check that the config space is correctly sized. Machine types before > 4.0 shouldn't have these fields so that the config space size remains > unchanged.
Sure! Since I should set a correct config size checking if new features are enabled or not at runtime, should be better to add a variable and an array of sizes like in virtio-net? Thanks, Stefano