qemu/hw/block
Paul Durrant 2bcd05cf24 xen-block: scale sector based quantities correctly
The Xen blkif protocol requires that sector based quantities should be
interpreted strictly as multiples of 512 bytes. Specifically:

"first_sect and last_sect in blkif_request_segment, as well as
sector_number in blkif_request, are always expressed in 512-byte units."

Commit fcab2b464e "xen: add header and build dataplane/xen-block.c"
incorrectly modified behaviour to use the block device logical_block_size
property as the scale, instead of correctly shifting values by the
hardcoded BDRV_SECTOR_BITS (and hence scaling them to 512 byte units).
This patch undoes that change and restores compliance with the spec.

Furthermore, this patch also restores the original xen_disk behaviour
of advertizing a hardcoded 'sector-size' value of 512 in xenstore and
scaling 'sectors' accordingly. The realize() method is also modified to
fail if logical_block_size is set to anything other than 512.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
Message-Id: <20190401121719.27208-1-paul.durrant@citrix.com>
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
2019-04-04 18:00:07 +01:00
..
dataplane xen-block: scale sector based quantities correctly 2019-04-04 18:00:07 +01:00
Kconfig isa: express SuperIO dependencies with Kconfig 2019-03-07 21:45:53 +01:00
Makefile.objs block: fix recursion in hw/block/dataplane 2019-03-07 21:45:53 +01:00
block.c pflash: Require backend size to match device, improve errors 2019-03-26 08:16:24 +01:00
cdrom.c block: Clean up includes 2016-01-20 13:36:23 +01:00
ecc.c block: Clean up includes 2016-01-20 13:36:23 +01:00
fdc.c fdc: fix segfault in fdctrl_stop_transfer() when DMA is disabled 2018-11-19 12:51:22 +01:00
hd-geometry.c Include less of the generated modular QAPI headers 2018-03-02 13:45:50 -06:00
m25p80.c hw/block: Use the IEC binary prefix definitions 2018-07-02 15:41:13 +02:00
nand.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
nvme.c nvme: fix write zeroes offset and count 2019-03-12 20:30:14 +01:00
nvme.h qemu/queue.h: leave head structs anonymous unless necessary 2019-01-11 15:46:55 +01:00
onenand.c block/noenand: Convert sysbus init function to realize function 2018-12-13 13:47:57 +00:00
pflash_cfi01.c pflash: Bury disabled code to limit device sizes 2019-03-26 08:16:24 +01:00
pflash_cfi02.c pflash: Bury disabled code to limit device sizes 2019-03-26 08:16:24 +01:00
tc58128.c hw/block/tc58128.c: Don't use load_image() 2018-12-14 13:30:52 +00:00
trace-events trace-events: Fix attribution of trace points to source 2019-03-22 16:18:07 +00:00
vhost-user-blk.c vhost-user-blk: Add support to get/set inflight buffer 2019-03-12 22:31:21 -04:00
virtio-blk.c hw/block/virtio-blk: Clean req->dev repetitions 2019-03-07 17:38:57 +00:00
xen-block.c xen-block: scale sector based quantities correctly 2019-04-04 18:00:07 +01:00
xen_blkif.h xen-block: scale sector based quantities correctly 2019-04-04 18:00:07 +01:00