]> git.proxmox.com Git - mirror_qemu.git/commit
xen-block: scale sector based quantities correctly
authorPaul Durrant <paul.durrant@citrix.com>
Mon, 1 Apr 2019 12:17:19 +0000 (13:17 +0100)
committerAnthony PERARD <anthony.perard@citrix.com>
Thu, 4 Apr 2019 17:00:07 +0000 (18:00 +0100)
commit2bcd05cf24a7de34e7e265247c010977e43f40bc
tree24f489fd871b4e6850844cbd5aca1711c20cc461
parent15f084505a8556b70134e9081176e90a1c178b7b
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 fcab2b464e06 "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>
hw/block/dataplane/xen-block.c
hw/block/xen-block.c
hw/block/xen_blkif.h