]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librados: async pool creation
authorYehuda Sadeh <yehuda@hq.newdream.net>
Thu, 21 Jul 2011 21:45:04 +0000 (14:45 -0700)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Fri, 22 Jul 2011 17:25:40 +0000 (10:25 -0700)
src/include/rados/librados.hpp
src/librados.cc

index df09b7d7990632a81b5af074af078c2df47b1947..2cd55cbbd3d0fbca0679ef0d6ef157719a824da0 100644 (file)
@@ -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);
index 041e8a10777fad81b4ac2fd915a83b23ce1c381d..3f53d4dd54d0d4253261a004ede2845bfbebffe0 100644 (file)
@@ -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)
 {