From: Yehuda Sadeh Date: Thu, 21 Jul 2011 21:45:04 +0000 (-0700) Subject: librados: async pool creation X-Git-Tag: v0.32~31 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=13d68ef404a39258ca63b94aa7a4ff62f6556363;p=ceph.git librados: async pool creation --- diff --git a/src/include/rados/librados.hpp b/src/include/rados/librados.hpp index df09b7d79906..2cd55cbbd3d0 100644 --- a/src/include/rados/librados.hpp +++ b/src/include/rados/librados.hpp @@ -291,6 +291,9 @@ namespace librados int pool_create(const char *name); int pool_create(const char *name, uint64_t auid); int pool_create(const char *name, uint64_t auid, __u8 crush_rule); + int pool_create_async(const char *name, PoolAsyncCompletion *c); + int pool_create_async(const char *name, uint64_t auid, PoolAsyncCompletion *c); + int pool_create_async(const char *name, uint64_t auid, __u8 crush_rule, PoolAsyncCompletion *c); int pool_delete(const char *name); int pool_delete_async(const char *name, PoolAsyncCompletion *c); int pool_lookup(const char *name); diff --git a/src/librados.cc b/src/librados.cc index 041e8a10777f..3f53d4dd54d0 100644 --- a/src/librados.cc +++ b/src/librados.cc @@ -524,6 +524,7 @@ public: int get_fs_stats(ceph_statfs& result); int pool_create(string& name, unsigned long long auid=0, __u8 crush_rule=0); + int pool_create_async(string& name, PoolAsyncCompletionImpl *c, unsigned long long auid=0, __u8 crush_rule=0); int pool_delete(const char *name); int pool_change_auid(rados_ioctx_t io, unsigned long long auid); int pool_get_auid(rados_ioctx_t io, unsigned long long *auid); @@ -1196,6 +1197,17 @@ pool_create(string& name, unsigned long long auid, return reply; } +int librados::RadosClient:: +pool_create_async(string& name, PoolAsyncCompletionImpl *c, unsigned long long auid, + __u8 crush_rule) +{ + Mutex::Locker l(lock); + objecter->create_pool(name, + new C_PoolAsync_Safe(c), + auid, crush_rule); + return 0; +} + int librados::RadosClient:: pool_delete(const char *name) { @@ -3056,6 +3068,27 @@ pool_create(const char *name, uint64_t auid, __u8 crush_rule) return client->pool_create(str, auid, crush_rule); } +int librados::Rados:: +pool_create_async(const char *name, PoolAsyncCompletion *c) +{ + string str(name); + return client->pool_create_async(str, c->pc); +} + +int librados::Rados:: +pool_create_async(const char *name, uint64_t auid, PoolAsyncCompletion *c) +{ + string str(name); + return client->pool_create_async(str, c->pc, auid); +} + +int librados::Rados:: +pool_create_async(const char *name, uint64_t auid, __u8 crush_rule, PoolAsyncCompletion *c) +{ + string str(name); + return client->pool_create_async(str, c->pc, auid, crush_rule); +} + int librados::Rados:: pool_delete(const char *name) {