]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: use int64_t for read_iterate
authorSage Weil <sage@newdream.net>
Tue, 15 Mar 2011 16:47:32 +0000 (09:47 -0700)
committerSage Weil <sage@newdream.net>
Tue, 15 Mar 2011 16:47:32 +0000 (09:47 -0700)
The read_iterate can cover > addressable memory on 32-bit archs.

Reported-by: Jeff Wu <cpwu@tnsoft.com.cn>
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
src/include/rbd/librbd.h
src/include/rbd/librbd.hpp
src/librbd.cc

index 5cf7a2b6cd449dde14a60b7047860cc415d92680..8bc52b5e7453994d3d872a8374e27cff0786b76f 100644 (file)
@@ -82,8 +82,8 @@ int rbd_snap_set(rbd_image_t image, const char *snapname);
 typedef void *rbd_completion_t;
 typedef void (*rbd_callback_t)(rbd_completion_t cb, void *arg);
 int rbd_read(rbd_image_t image, uint64_t ofs, size_t len, char *buf);
-int rbd_read_iterate(rbd_image_t image, uint64_t ofs, size_t len,
-                    int (*cb)(uint64_t, size_t, const char *, void *), void *arg);
+int64_t rbd_read_iterate(rbd_image_t image, uint64_t ofs, size_t len,
+                        int (*cb)(uint64_t, size_t, const char *, void *), void *arg);
 int rbd_write(rbd_image_t image, uint64_t ofs, size_t len, const char *buf);
 int rbd_aio_write(rbd_image_t image, uint64_t off, size_t len, const char *buf, rbd_completion_t c);
 int rbd_aio_read(rbd_image_t image, uint64_t off, size_t len, char *buf, rbd_completion_t c);
index d6c4d2b1b9dbb44569bcbbddb166308c6919d6bc..79629da4543977f35f515c461f0fb3437b913888 100644 (file)
@@ -89,8 +89,8 @@ public:
 
   /* I/O */
   int read(uint64_t ofs, size_t len, ceph::bufferlist& bl);
-  int read_iterate(uint64_t ofs, size_t len,
-                   int (*cb)(uint64_t, size_t, const char *, void *), void *arg);
+  int64_t read_iterate(uint64_t ofs, size_t len,
+                      int (*cb)(uint64_t, size_t, const char *, void *), void *arg);
   int write(uint64_t ofs, size_t len, ceph::bufferlist& bl);
 
   int aio_write(uint64_t off, size_t len, ceph::bufferlist& bl, RBD::AioCompletion *c);
index 0b39044bd6dc56b921c0f1eb8393d820bdb46437..7c47c45c15f40001d562bedafa65e4d88ded9e80 100644 (file)
@@ -248,9 +248,9 @@ namespace librbd {
   void init_rbd_header(struct rbd_obj_header_ondisk& ondisk,
                              uint64_t size, int *order, uint64_t bid);
 
-  int read_iterate(ImageCtx *ictx, uint64_t off, size_t len,
-                   int (*cb)(uint64_t, size_t, const char *, void *),
-                   void *arg);
+  int64_t read_iterate(ImageCtx *ictx, uint64_t off, size_t len,
+                      int (*cb)(uint64_t, size_t, const char *, void *),
+                      void *arg);
   int read(ImageCtx *ictx, uint64_t off, size_t len, char *buf);
   int write(ImageCtx *ictx, uint64_t off, size_t len, const char *buf);
   int aio_write(ImageCtx *ictx, uint64_t off, size_t len, const char *buf,
@@ -1017,16 +1017,16 @@ void close_image(ImageCtx *ictx)
   ictx = NULL;
 }
 
-int read_iterate(ImageCtx *ictx, uint64_t off, size_t len,
-                int (*cb)(uint64_t, size_t, const char *, void *),
-                void *arg)
+int64_t read_iterate(ImageCtx *ictx, uint64_t off, size_t len,
+                    int (*cb)(uint64_t, size_t, const char *, void *),
+                    void *arg)
 {
   int r = ictx_check(ictx);
   if (r < 0)
     return r;
 
   int64_t ret;
-  int total_read = 0;
+  int64_t total_read = 0;
   uint64_t start_block = get_block_num(&ictx->header, off);
   uint64_t end_block = get_block_num(&ictx->header, off + len);
   uint64_t block_size = get_block_size(&ictx->header);
@@ -1466,8 +1466,8 @@ int Image::read(uint64_t ofs, size_t len, bufferlist& bl)
   return librbd::read(ictx, ofs, len, bl.c_str());
 }
 
-int Image::read_iterate(uint64_t ofs, size_t len,
-                   int (*cb)(uint64_t, size_t, const char *, void *), void *arg)
+int64_t Image::read_iterate(uint64_t ofs, size_t len,
+                           int (*cb)(uint64_t, size_t, const char *, void *), void *arg)
 {
   ImageCtx *ictx = (ImageCtx *)ctx;
   return librbd::read_iterate(ictx, ofs, len, cb, arg);
@@ -1677,8 +1677,8 @@ extern "C" int rbd_read(rbd_image_t image, uint64_t ofs, size_t len, char *buf)
   return librbd::read(ictx, ofs, len, buf);
 }
 
-extern "C" int rbd_read_iterate(rbd_image_t image, uint64_t ofs, size_t len,
-                               int (*cb)(uint64_t, size_t, const char *, void *), void *arg)
+extern "C" int64_t rbd_read_iterate(rbd_image_t image, uint64_t ofs, size_t len,
+                                   int (*cb)(uint64_t, size_t, const char *, void *), void *arg)
 {
   librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
   return librbd::read_iterate(ictx, ofs, len, cb, arg);