]> git.apps.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:35 +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 20651892c0c4f1b4bd0792c79b77f53f07d81912..76c1c91512655c99a9e7bf7f9cbbf23cc5584063 100644 (file)
@@ -5955,7 +5955,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);