From f2684c9388adcfcea66552a3a33323cf5ff05435 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 3 Feb 2014 08:54:14 -0800 Subject: [PATCH] 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 Reviewed-by: John Spray (cherry picked from commit 7ff2b541c24d1c81c3bcfbcb347694c2097993d7) --- src/client/Client.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index 20651892c0c4f..76c1c91512655 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -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); -- 2.39.5