diff options
author | Sage Weil <sage@inktank.com> | 2014-02-03 08:54:14 -0800 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2014-02-03 08:54:14 -0800 |
commit | 7ff2b541c24d1c81c3bcfbcb347694c2097993d7 (patch) | |
tree | ce7d15ed210ada47cfda291517ab9509a6e5627f | |
parent | 560f5f1f88fe9ecdd1839db70ff9f824475abc36 (diff) | |
download | ceph-7ff2b541c24d1c81c3bcfbcb347694c2097993d7.tar.gz |
client: use 64-bit value in sync read eof logic
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>
-rw-r--r-- | src/client/Client.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/client/Client.cc b/src/client/Client.cc index db050b94d89..236814719fe 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -5971,7 +5971,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); |