From: Samuel Just Date: Wed, 2 Feb 2011 22:19:42 +0000 (-0800) Subject: RBD.cc: pread returns a signed value X-Git-Tag: v0.25~231^2~15 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d47789d64ee97585cff088cb2acf728a0932beeb;p=ceph.git RBD.cc: pread returns a signed value The check for len < 0 here always returned true since len is uint64_t. Signed-off-by: Samuel Just --- diff --git a/src/rbd.cc b/src/rbd.cc index 45ceb3730d35..0ccc76db3c51 100644 --- a/src/rbd.cc +++ b/src/rbd.cc @@ -882,12 +882,14 @@ static int do_import(pool_t pool, const char *imgname, int order, const char *pa uint64_t len = seg_left; bufferptr p(len); cerr << "reading " << len << " bytes at offset " << file_pos << std::endl; - len = pread(fd, p.c_str(), len, file_pos); - if (len < 0) { + ssize_t ret = pread(fd, p.c_str(), len, file_pos); + if (ret < 0) { r = -errno; cerr << "error reading file\n" << std::endl; goto done; - } + } else { + len = ret; + } bufferlist bl; bl.append(p); string oid = get_block_oid(&header, i);