]> xenbits.xensource.com Git - libvirt.git/commitdiff
storage: Fix a vol-clone bug on ppc64
authorLi Zhang <zhlcindy@linux.vnet.ibm.com>
Thu, 7 Nov 2013 08:35:10 +0000 (16:35 +0800)
committerJán Tomko <jtomko@redhat.com>
Fri, 8 Nov 2013 06:51:43 +0000 (07:51 +0100)
vol-clone reports out of memory error with disk type on ppc64.

Currently, wbytes is defined as size_t type (8 bytes), but
args's value in ioctl(fd, args..) in kernel is int (4 bytes).
This makes wbytes 2^32 times larger, causing an out of memory error.

This patch changes size_t to int to synchronize with kernel.

[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/block/ioctl.c?id=5e01dc7b#n363
[2] https://lkml.org/lkml/2013/11/1/620

Signed-off-by: Li Zhang <zhlcindy@linux.vnet.ibm.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
src/storage/storage_backend.c

index 4b1b00db1157c6e5411236569c879fecce9b11c4..1e3292b95f3754f97fb9017065b7470ac8917d2d 100644 (file)
@@ -135,7 +135,7 @@ virStorageBackendCopyToFD(virStorageVolDefPtr vol,
     int amtread = -1;
     int ret = 0;
     size_t rbytes = READ_BLOCK_SIZE_DEFAULT;
-    size_t wbytes = 0;
+    int wbytes = 0;
     int interval;
     char *zerobuf = NULL;
     char *buf = NULL;