]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
RBD.cc: pread returns a signed value
authorSamuel Just <samuel.just@dreamhost.com>
Wed, 2 Feb 2011 22:19:42 +0000 (14:19 -0800)
committerSamuel Just <samuel.just@dreamhost.com>
Wed, 2 Feb 2011 22:38:14 +0000 (14:38 -0800)
The check for len < 0 here always returned true since len is uint64_t.

Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
src/rbd.cc

index 45ceb3730d359324fcd46493f63aa04ba71d2b75..0ccc76db3c515dcc7a5812385c47875217235d36 100644 (file)
@@ -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);