]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: use 64-bit value in sync read eof logic
authorSage Weil <sage@inktank.com>
Mon, 3 Feb 2014 16:54:14 +0000 (08:54 -0800)
committerSage Weil <sage@inktank.com>
Mon, 3 Feb 2014 17:02:43 +0000 (09:02 -0800)
The file size can jump to a value that is very much larger than our current
position (for example, it could be a disk image file that gets a sparse
write at a large offset).  Use a 64-bit value so that 'some' doesn't
overflow.

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: John Spray <john.spray@inktank.com>
(cherry picked from commit 7ff2b541c24d1c81c3bcfbcb347694c2097993d7)

src/client/Client.cc

index 4b10cf5c1bac45fb7fc6f9fc7ec246280e7ec75a..7cf3195365dd919c63cdf4d894ca2a70fe22a05b 100644 (file)
@@ -5859,7 +5859,7 @@ int Client::_read_sync(Fh *f, uint64_t off, uint64_t len, bufferlist *bl)
     if (r >= 0 && r < wanted) {
       if (pos < in->size) {
        // zero up to known EOF
-       int some = in->size - pos;
+       int64_t some = in->size - pos;
        if (some > left)
          some = left;
        bufferptr z(some);