diff options
author | Felipe Franciosi <felipe.franciosi@citrix.com> | 2013-04-05 15:47:59 +0000 |
---|---|---|
committer | Stefano Stabellini <stefano.stabellini@eu.citrix.com> | 2013-04-05 15:47:59 +0000 |
commit | 9246ce881128df2a69178779c1ef33c83df3c70d (patch) | |
tree | 9a8736d0038552518c67346f22498b0c8b8749b4 /hw/xen_disk.c | |
parent | 10bb3c623478117aee5117c312736f10833decc2 (diff) |
Allow xen guests to plug disks of 1 TiB or more
The current xen backend driver implementation uses int64_t variables
to store the size of the corresponding backend disk/file. It also uses
an int64_t variable to store the block size of that image. When writing
the number of sectors (file_size/block_size) to xenstore, however, it
passes these values as 32 bit signed integers. This will cause an
overflow for any disk of 1 TiB or more.
This patch changes the xen backend driver to use a 64 bit integer write
xenstore function.
Signed-off-by: Felipe Franciosi <felipe@paradoxo.org>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Diffstat (limited to 'hw/xen_disk.c')
-rw-r--r-- | hw/xen_disk.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/hw/xen_disk.c b/hw/xen_disk.c index 1a30f0a9ed..47a51cf014 100644 --- a/hw/xen_disk.c +++ b/hw/xen_disk.c @@ -825,8 +825,8 @@ static int blk_connect(struct XenDevice *xendev) /* Fill in number of sector size and number of sectors */ xenstore_write_be_int(&blkdev->xendev, "sector-size", blkdev->file_blk); - xenstore_write_be_int(&blkdev->xendev, "sectors", - blkdev->file_size / blkdev->file_blk); + xenstore_write_be_int64(&blkdev->xendev, "sectors", + blkdev->file_size / blkdev->file_blk); if (xenstore_read_fe_int(&blkdev->xendev, "ring-ref", &blkdev->ring_ref) == -1) { return -1; |