]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
Allow xen guests to plug disks of 1 TiB or more qemu-xen-4.2.2 qemu-xen-4.2.2-rc2 qemu-xen-4.2.3
authorFelipe Franciosi <felipe.franciosi@citrix.com>
Fri, 5 Apr 2013 15:47:59 +0000 (15:47 +0000)
committerStefano Stabellini <stefano.stabellini@eu.citrix.com>
Fri, 5 Apr 2013 23:39:54 +0000 (23:39 +0000)
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.

upstream-commit-id: 9246ce881128df2a69178779c1ef33c83df3c70d

Signed-off-by: Felipe Franciosi <felipe@paradoxo.org>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
hw/xen_disk.c

index 50fa25e577a272785f74869c5e158f3a6db67046..c6f9cc7629e7f22923944383264a9930dfade54f 100644 (file)
@@ -683,9 +683,9 @@ static int blk_connect(struct XenDevice *xendev)
                   blkdev->file_size, blkdev->file_size >> 20);
 
     /* 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_int(&blkdev->xendev, "sector-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;