On 11/07/2013 09:35 AM, Li Zhang wrote:
From: Li Zhang <zhlcindy(a)linux.vnet.ibm.com>
vol-clone reports out of memory error with disk type on ppc64.
Currently, wbytes is defined as size_t type which is 8 bytes on ppc64,
but args's value in ioctl(fd, args..) in kernel is unsigned int.
So it will read more 4 bytes by ioctl() with size_t from memory which
gets a large number and causes out of memory error.
On x86_64 size_t is 8 bytes and int is 4 bytes, I guess this is an endianness issue.
This patch changes size_t to unsigned int to synchronize with kernel.
The type in the kernel seems to be int:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/bloc...
https://lkml.org/lkml/2013/11/1/620
Signed-off-by: Li Zhang <zhlcindy(a)linux.vnet.ibm.com>
---
src/storage/storage_backend.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
index 4b1b00d..f510080 100644
--- a/src/storage/storage_backend.c
+++ b/src/storage/storage_backend.c
@@ -135,7 +135,7 @@ virStorageBackendCopyToFD(virStorageVolDefPtr vol,
int amtread = -1;
int ret = 0;
size_t rbytes = READ_BLOCK_SIZE_DEFAULT;
- size_t wbytes = 0;
+ unsigned int wbytes = 0;
int interval;
char *zerobuf = NULL;
char *buf = NULL;
I'll push this with s/unsigned // later, unless someone has a different opinion.
Jan