aboutsummaryrefslogtreecommitdiff
path: root/hw/block/xen_blkif.h
diff options
context:
space:
mode:
authorPaul Durrant <paul.durrant@citrix.com>2019-04-01 13:17:19 +0100
committerAnthony PERARD <anthony.perard@citrix.com>2019-04-04 18:00:07 +0100
commit2bcd05cf24a7de34e7e265247c010977e43f40bc (patch)
tree24f489fd871b4e6850844cbd5aca1711c20cc461 /hw/block/xen_blkif.h
parent15f084505a8556b70134e9081176e90a1c178b7b (diff)
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>
Diffstat (limited to 'hw/block/xen_blkif.h')
-rw-r--r--hw/block/xen_blkif.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/hw/block/xen_blkif.h b/hw/block/xen_blkif.h
index 3e6e1ea365..a353693ea0 100644
--- a/hw/block/xen_blkif.h
+++ b/hw/block/xen_blkif.h
@@ -143,4 +143,6 @@ static inline void blkif_get_x86_64_req(blkif_request_t *dst,
}
}
+#define XEN_BLKIF_SECTOR_SIZE 512
+
#endif /* XEN_BLKIF_H */