/* I/O */
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);
+ssize_t rbd_read(rbd_image_t image, uint64_t ofs, size_t len, char *buf);
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);
+ssize_t 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);
int rbd_aio_create_completion(void *cb_arg, rbd_callback_t complete_cb, rbd_completion_t *c);
int rbd_aio_wait_for_complete(rbd_completion_t c);
-int rbd_aio_get_return_value(rbd_completion_t c);
+ssize_t rbd_aio_get_return_value(rbd_completion_t c);
void rbd_aio_release(rbd_completion_t c);
#ifdef __cplusplus
void *pc;
AioCompletion(void *cb_arg, callback_t complete_cb);
int wait_for_complete();
- int get_return_value();
+ ssize_t get_return_value();
void release();
};
int snap_set(const char *snap_name);
/* I/O */
- int read(uint64_t ofs, size_t len, ceph::bufferlist& bl);
+ ssize_t read(uint64_t ofs, size_t len, ceph::bufferlist& bl);
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);
+ ssize_t 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);
int aio_read(uint64_t off, size_t len, ceph::bufferlist& bl, RBD::AioCompletion *c);
Mutex lock;
Cond cond;
bool done;
- int rval;
+ ssize_t rval;
callback_t complete_cb;
void *complete_arg;
rbd_completion_t rbd_comp;
void complete_block(AioBlockCompletion *block_completion, int r);
- int get_return_value() {
+ ssize_t get_return_value() {
lock.Lock();
- int r = rval;
+ ssize_t r = rval;
lock.Unlock();
return r;
}
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);
+ ssize_t read(ImageCtx *ictx, uint64_t off, size_t len, char *buf);
+ ssize_t 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,
AioCompletion *c);
int aio_read(ImageCtx *ictx, uint64_t off, size_t len,
}
-int read(ImageCtx *ictx, uint64_t ofs, size_t len, char *buf)
+ssize_t read(ImageCtx *ictx, uint64_t ofs, size_t len, char *buf)
{
return read_iterate(ictx, ofs, len, simple_read_cb, buf);
}
-int write(ImageCtx *ictx, uint64_t off, size_t len, const char *buf)
+ssize_t write(ImageCtx *ictx, uint64_t off, size_t len, const char *buf)
{
if (!len)
return 0;
if (r < 0)
return r;
- int total_write = 0;
+ size_t total_write = 0;
uint64_t start_block = get_block_num(&ictx->header, off);
uint64_t end_block = get_block_num(&ictx->header, off + len - 1);
uint64_t block_size = get_block_size(&ictx->header);
if (r < 0)
return r;
- int total_write = 0;
+ size_t total_write = 0;
uint64_t start_block = get_block_num(&ictx->header, off);
uint64_t end_block = get_block_num(&ictx->header, off + len - 1);
uint64_t block_size = get_block_size(&ictx->header);
return c->wait_for_complete();
}
-int RBD::AioCompletion::get_return_value()
+ssize_t RBD::AioCompletion::get_return_value()
{
librbd::AioCompletion *c = (librbd::AioCompletion *)pc;
return c->get_return_value();
return librbd::snap_set(ictx, snap_name);
}
-int Image::read(uint64_t ofs, size_t len, bufferlist& bl)
+ssize_t Image::read(uint64_t ofs, size_t len, bufferlist& bl)
{
ImageCtx *ictx = (ImageCtx *)ctx;
bufferptr ptr(len);
return librbd::read_iterate(ictx, ofs, len, cb, arg);
}
-int Image::write(uint64_t ofs, size_t len, bufferlist& bl)
+ssize_t Image::write(uint64_t ofs, size_t len, bufferlist& bl)
{
ImageCtx *ictx = (ImageCtx *)ctx;
if (bl.length() < len)
}
/* I/O */
-extern "C" int rbd_read(rbd_image_t image, uint64_t ofs, size_t len, char *buf)
+extern "C" ssize_t rbd_read(rbd_image_t image, uint64_t ofs, size_t len, char *buf)
{
librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
return librbd::read(ictx, ofs, len, buf);
return librbd::read_iterate(ictx, ofs, len, cb, arg);
}
-extern "C" int rbd_write(rbd_image_t image, uint64_t ofs, size_t len, const char *buf)
+extern "C" ssize_t rbd_write(rbd_image_t image, uint64_t ofs, size_t len, const char *buf)
{
librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
return librbd::write(ictx, ofs, len, buf);
return comp->wait_for_complete();
}
-extern "C" int rbd_aio_get_return_value(rbd_completion_t c)
+extern "C" ssize_t rbd_aio_get_return_value(rbd_completion_t c)
{
librbd::RBD::AioCompletion *comp = (librbd::RBD::AioCompletion *)c;
return comp->get_return_value();