40 lines
1.3 KiB
Diff
40 lines
1.3 KiB
Diff
changeset: 24610:255ae011567d
|
|
user: Olaf Hering <olaf@aepfle.de>
|
|
date: Fri Jan 27 19:03:37 2012 +0000
|
|
files: tools/xenpaging/file_ops.c
|
|
description:
|
|
xenpaging: make file_op largefile aware
|
|
|
|
lseek() takes an off_t, the used "int << shiftsize" does not automatically
|
|
convert the int into a larger type. This leads to write errors with pagefiles
|
|
larger than 2G. Fix this by shifting an off_t instead of an int.
|
|
|
|
Signed-off-by: Olaf Hering <olaf@aepfle.de>
|
|
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
|
|
|
|
|
|
---
|
|
tools/xenpaging/file_ops.c | 6 +++---
|
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
Index: xen-4.1.2-testing/tools/xenpaging/file_ops.c
|
|
===================================================================
|
|
--- xen-4.1.2-testing.orig/tools/xenpaging/file_ops.c
|
|
+++ xen-4.1.2-testing/tools/xenpaging/file_ops.c
|
|
@@ -26,12 +26,12 @@
|
|
static int file_op(int fd, void *page, int i,
|
|
ssize_t (*fn)(int, void *, size_t))
|
|
{
|
|
- off_t seek_ret;
|
|
+ off_t offset = i;
|
|
int total = 0;
|
|
int bytes;
|
|
|
|
- seek_ret = lseek(fd, i << PAGE_SHIFT, SEEK_SET);
|
|
- if ( seek_ret == (off_t)-1 )
|
|
+ offset = lseek(fd, offset << PAGE_SHIFT, SEEK_SET);
|
|
+ if ( offset == (off_t)-1 )
|
|
return -1;
|
|
|
|
while ( total < PAGE_SIZE )
|