From: Sage Weil Date: Mon, 14 Mar 2011 20:22:16 +0000 (-0700) Subject: Merge branch 'stable' X-Git-Tag: v0.26~145 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8954d2b3e65636e6cb8ca280c917ba742e0fa9bb;p=ceph.git Merge branch 'stable' Conflicts: src/include/rados/librados.h src/include/rados/librados.hpp src/librados.cc --- 8954d2b3e65636e6cb8ca280c917ba742e0fa9bb diff --cc debian/control index 9da4896c316d,fa722523f34d..7cb169cba882 --- a/debian/control +++ b/debian/control @@@ -118,9 -117,11 +118,11 @@@ Description: debugging symbols for libc This package contains debugging symbols for libcrush. Package: libcrush-dev -Architecture: any +Architecture: i386 amd64 Section: libdevel Depends: ${shlibs:Depends}, ${misc:Depends}, libcrush1 (= ${binary:Version}) + Conflicts: libcrush1-dev + Replaces: libcrush1-dev Description: CRUSH mapping algorithm (development files) CRUSH is a pseudo-random hash-like algorithm for mapping inputs to a changing hierarchy of devices without a centralized directory. It was @@@ -161,9 -161,11 +163,11 @@@ Description: debugging symbols for libr This package contains debugging symbols for librados. Package: librados-dev -Architecture: any +Architecture: i386 amd64 Section: libdevel Depends: ${shlibs:Depends}, ${misc:Depends}, librados2 (= ${binary:Version}) + Conflicts: librados1-dev, librados2-dev + Replaces: librados1-dev, librados2-dev Description: RADOS distributed object store client library (development files) RADOS is a reliable, autonomic distributed object storage cluster developed as part of the Ceph distributed storage system. This is a @@@ -197,9 -198,11 +201,11 @@@ Description: debugging symbols for libr This package contains debugging symbols for librbd1. Package: librbd-dev -Architecture: any +Architecture: i386 amd64 Section: libdevel Depends: ${shlibs:Depends}, ${misc:Depends}, librbd1 (= ${binary:Version}) + Conflicts: librbd1-dev + Replaces: librbd1-dev Description: RADOS block device client library (development files) RBD is a block device striped across multiple distributed objects in RADOS, a reliable, autonomic distributed object storage cluster @@@ -235,9 -237,11 +241,11 @@@ Description: debugging symbols for libc This package contains debugging symbols for libceph1. Package: libceph-dev -Architecture: any +Architecture: i386 amd64 Section: libdevel Depends: ${shlibs:Depends}, ${misc:Depends}, libceph1 (= ${binary:Version}) + Conflicts: libceph1-dev + Replaces: libceph1-dev Description: Ceph distributed file system client library (development files) Ceph is a distributed network file system designed to provide excellent performance, reliability, and scalability. This is a diff --cc src/include/rados/librados.h index 00e4e7cc8642,e30189ae28e2..1b3cd19decfa --- a/src/include/rados/librados.h +++ b/src/include/rados/librados.h @@@ -136,12 -140,11 +140,12 @@@ int rados_ioctx_snap_get_stamp(rados_io /* sync io */ uint64_t rados_get_last_version(rados_ioctx_t io); - int rados_write(rados_ioctx_t io, const char *oid, const char *buf, size_t len, off_t off); + int rados_write(rados_ioctx_t io, const char *oid, const char *buf, size_t len, uint64_t off); + int rados_write_full(rados_ioctx_t io, const char *oid, const char *buf, size_t len, uint64_t off); +int rados_append(rados_ioctx_t io, const char *oid, const char *buf, size_t len); - int rados_write_full(rados_ioctx_t io, const char *oid, const char *buf, size_t len, off_t off); - int rados_read(rados_ioctx_t io, const char *oid, char *buf, size_t len, off_t off); + int rados_read(rados_ioctx_t io, const char *oid, char *buf, size_t len, uint64_t off); int rados_remove(rados_ioctx_t io, const char *oid); - int rados_trunc(rados_ioctx_t io, const char *oid, size_t size); + int rados_trunc(rados_ioctx_t io, const char *oid, uint64_t size); /* attrs */ int rados_getxattr(rados_ioctx_t io, const char *o, const char *name, char *buf, size_t len); @@@ -169,10 -172,7 +173,10 @@@ uint64_t rados_aio_get_obj_ver(rados_co void rados_aio_release(rados_completion_t c); int rados_aio_write(rados_ioctx_t io, const char *oid, rados_completion_t completion, - const char *buf, size_t len, off_t off); + const char *buf, size_t len, uint64_t off); +int rados_aio_append(rados_ioctx_t io, const char *oid, + rados_completion_t completion, + const char *buf, size_t len); int rados_aio_write_full(rados_ioctx_t io, const char *oid, rados_completion_t completion, const char *buf, size_t len); diff --cc src/include/rados/librados.hpp index 00aa1ed3217f,c7a650ced671..faf1d0c31c1c --- a/src/include/rados/librados.hpp +++ b/src/include/rados/librados.hpp @@@ -118,14 -117,13 +118,14 @@@ namespace librado // create an object int create(const std::string& oid, bool exclusive); - int write(const std::string& oid, bufferlist& bl, size_t len, off_t off); + int write(const std::string& oid, bufferlist& bl, size_t len, uint64_t off); + int append(const std::string& oid, bufferlist& bl, size_t len); int write_full(const std::string& oid, bufferlist& bl); - int read(const std::string& oid, bufferlist& bl, size_t len, off_t off); + int read(const std::string& oid, bufferlist& bl, size_t len, uint64_t off); int remove(const std::string& oid); - int trunc(const std::string& oid, size_t size); - int mapext(const std::string& o, off_t off, size_t len, std::map& m); - int sparse_read(const std::string& o, std::map& m, bufferlist& bl, size_t len, off_t off); + int trunc(const std::string& oid, uint64_t size); + int mapext(const std::string& o, uint64_t off, size_t len, std::map& m); + int sparse_read(const std::string& o, std::map& m, bufferlist& bl, size_t len, uint64_t off); int getxattr(const std::string& oid, const char *name, bufferlist& bl); int getxattrs(const std::string& oid, std::map& attrset); int setxattr(const std::string& oid, const char *name, bufferlist& bl); @@@ -168,14 -166,12 +168,14 @@@ uint64_t get_last_version(); int aio_read(const std::string& oid, AioCompletion *c, - bufferlist *pbl, size_t len, off_t off); + bufferlist *pbl, size_t len, uint64_t off); int aio_sparse_read(const std::string& oid, AioCompletion *c, - std::map *m, bufferlist *data_bl, - size_t len, off_t off); + std::map *m, bufferlist *data_bl, + size_t len, uint64_t off); int aio_write(const std::string& oid, AioCompletion *c, const bufferlist& bl, - size_t len, off_t off); + size_t len, uint64_t off); + int aio_append(const std::string& oid, AioCompletion *c, const bufferlist& bl, + size_t len); int aio_write_full(const std::string& oid, AioCompletion *c, const bufferlist& bl); // watch/notify diff --cc src/librados.cc index 9f5d68e1dd19,7fafe45da58d..b4ceedfceb1d --- a/src/librados.cc +++ b/src/librados.cc @@@ -307,16 -303,15 +307,16 @@@ public // io int create(IoCtxImpl& io, const object_t& oid, bool exclusive); - int write(IoCtxImpl& io, const object_t& oid, bufferlist& bl, size_t len, off_t off); + int write(IoCtxImpl& io, const object_t& oid, bufferlist& bl, size_t len, uint64_t off); + int append(IoCtxImpl& io, const object_t& oid, bufferlist& bl, size_t len); int write_full(IoCtxImpl& io, const object_t& oid, bufferlist& bl); - int read(IoCtxImpl& io, const object_t& oid, bufferlist& bl, size_t len, off_t off); - int mapext(IoCtxImpl& io, const object_t& oid, off_t off, size_t len, std::map& m); - int sparse_read(IoCtxImpl& io, const object_t& oid, std::map& m, bufferlist& bl, - size_t len, off_t off); + int read(IoCtxImpl& io, const object_t& oid, bufferlist& bl, size_t len, uint64_t off); + int mapext(IoCtxImpl& io, const object_t& oid, uint64_t off, size_t len, std::map& m); + int sparse_read(IoCtxImpl& io, const object_t& oid, std::map& m, bufferlist& bl, + size_t len, uint64_t off); int remove(IoCtxImpl& io, const object_t& oid); int stat(IoCtxImpl& io, const object_t& oid, uint64_t *psize, time_t *pmtime); - int trunc(IoCtxImpl& io, const object_t& oid, size_t size); + int trunc(IoCtxImpl& io, const object_t& oid, uint64_t size); int tmap_update(IoCtxImpl& io, const object_t& oid, bufferlist& cmdbl); int exec(IoCtxImpl& io, const object_t& oid, const char *cls, const char *method, bufferlist& inbl, bufferlist& outbl); @@@ -427,16 -422,14 +427,16 @@@ }; int aio_read(IoCtxImpl& io, const object_t oid, AioCompletionImpl *c, - bufferlist *pbl, size_t len, off_t off); + bufferlist *pbl, size_t len, uint64_t off); int aio_read(IoCtxImpl& io, object_t oid, AioCompletionImpl *c, - char *buf, size_t len, off_t off); + char *buf, size_t len, uint64_t off); int aio_sparse_read(IoCtxImpl& io, const object_t oid, - AioCompletionImpl *c, std::map *m, - bufferlist *data_bl, size_t len, off_t off); + AioCompletionImpl *c, std::map *m, + bufferlist *data_bl, size_t len, uint64_t off); int aio_write(IoCtxImpl& io, const object_t &oid, AioCompletionImpl *c, - const bufferlist& bl, size_t len, off_t off); + const bufferlist& bl, size_t len, uint64_t off); + int aio_append(IoCtxImpl& io, const object_t &oid, AioCompletionImpl *c, + const bufferlist& bl, size_t len); int aio_write_full(IoCtxImpl& io, const object_t &oid, AioCompletionImpl *c, const bufferlist& bl); @@@ -2338,16 -2266,9 +2338,16 @@@ aio_sparse_read(const std::string& oid int librados::IoCtx:: aio_write(const std::string& oid, librados::AioCompletion *c, const bufferlist& bl, - size_t len, off_t off) + size_t len, uint64_t off) { - return io_ctx_impl->client->aio_write(*io_ctx_impl, oid, c->pc, bl, len, off ); + return io_ctx_impl->client->aio_write(*io_ctx_impl, oid, c->pc, bl, len, off); +} + +int librados::IoCtx:: +aio_append(const std::string& oid, librados::AioCompletion *c, const bufferlist& bl, + size_t len) +{ + return io_ctx_impl->client->aio_append(*io_ctx_impl, oid, c->pc, bl, len); } int librados::IoCtx:: @@@ -2770,16 -2728,7 +2782,16 @@@ extern "C" int rados_write(rados_ioctx_ return ctx->client->write(*ctx, oid, bl, len, off); } +extern "C" int rados_append(rados_ioctx_t io, const char *o, const char *buf, size_t len) +{ + librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; + object_t oid(o); + bufferlist bl; + bl.append(buf, len); + return ctx->client->append(*ctx, oid, bl, len); +} + - extern "C" int rados_write_full(rados_ioctx_t io, const char *o, const char *buf, size_t len, off_t off) + extern "C" int rados_write_full(rados_ioctx_t io, const char *o, const char *buf, size_t len, uint64_t off) { librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); diff --cc src/librbd.cc index 7bdda9f43312,f0aaddf3257a..d0aee23b5f8a --- a/src/librbd.cc +++ b/src/librbd.cc @@@ -1201,10 -1206,9 +1201,10 @@@ void rados_cb(rados_completion_t c, voi dout(10) << "rados_cb" << dendl; AioBlockCompletion *block_completion = (AioBlockCompletion *)arg; block_completion->complete(rados_aio_get_return_value(c)); + delete block_completion; } - int aio_write(ImageCtx *ictx, off_t off, size_t len, const char *buf, + int aio_write(ImageCtx *ictx, uint64_t off, size_t len, const char *buf, AioCompletion *c) { if (!len)