summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2014-02-03 08:54:14 -0800
committerSage Weil <sage@inktank.com>2014-02-03 08:54:14 -0800
commit7ff2b541c24d1c81c3bcfbcb347694c2097993d7 (patch)
treece7d15ed210ada47cfda291517ab9509a6e5627f
parent560f5f1f88fe9ecdd1839db70ff9f824475abc36 (diff)
downloadceph-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.cc2
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);