]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librados: add selfmanaged_snap_rollback
authorJosh Durgin <josh.durgin@dreamhost.com>
Wed, 30 Mar 2011 22:00:55 +0000 (15:00 -0700)
committerJosh Durgin <josh.durgin@dreamhost.com>
Thu, 31 Mar 2011 00:26:59 +0000 (17:26 -0700)
This was removed in 2cb86f713df38ebee6aa10a81157f99264a59a70, but is
required for selfmanaged snaps because their snapids aren't in the
pool's snap list, which is how regular rollback finds them.

Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
src/include/rados/librados.h
src/include/rados/librados.hpp
src/librados.cc

index a66d32b77d3ea09a69516606ee884298133717fd..65195548614b60f166a01b99b9e8b62e2ad06280 100644 (file)
@@ -136,6 +136,7 @@ int rados_rollback(rados_ioctx_t io, const char *oid,
 void rados_ioctx_snap_set_read(rados_ioctx_t io, rados_snap_t snap);
 int rados_ioctx_selfmanaged_snap_create(rados_ioctx_t io, uint64_t *snapid);
 int rados_ioctx_selfmanaged_snap_remove(rados_ioctx_t io, uint64_t snapid);
+int rados_ioctx_selfmanaged_snap_rollback(rados_ioctx_t io, const char *oid, uint64_t snapid);
 int rados_ioctx_selfmanaged_snap_set_write_ctx(rados_ioctx_t io, rados_snap_t seq, rados_snap_t *snaps, int num_snaps);
 
 int rados_ioctx_snap_list(rados_ioctx_t io, rados_snap_t *snaps, int maxlen);
index 029648f35ec1099e7fa59faebe595b69d690a1b7..d7c375e7213766c5d8a2989cb6f79fd769bc4b97 100644 (file)
@@ -164,6 +164,8 @@ namespace librados
 
     int selfmanaged_snap_remove(uint64_t snapid);
 
+    int selfmanaged_snap_rollback(const std::string& oid, uint64_t snapid);
+
     ObjectIterator objects_begin();
     const ObjectIterator& objects_end() const;
 
index 430996da04c1b360962537e226911fe6c3dbbacf..17f3420e9087874fa2d523b109dca4423820439f 100644 (file)
@@ -2324,6 +2324,15 @@ selfmanaged_snap_remove(uint64_t snapid)
   return io_ctx_impl->client->selfmanaged_snap_remove(io_ctx_impl, snapid);
 }
 
+int librados::IoCtx::
+selfmanaged_snap_rollback(const std::string& oid, uint64_t snapid)
+{
+  return io_ctx_impl->client->selfmanaged_snap_rollback_object(io_ctx_impl,
+                                                              oid,
+                                                              io_ctx_impl->snapc,
+                                                              snapid);
+}
+
 librados::ObjectIterator librados::IoCtx::
 objects_begin()
 {
@@ -2990,6 +2999,14 @@ extern "C" int rados_ioctx_selfmanaged_snap_remove(rados_ioctx_t io,
   return ctx->client->selfmanaged_snap_remove(ctx, snapid);
 }
 
+extern "C" int rados_ioctx_selfmanaged_snap_rollback(rados_ioctx_t io,
+                                                    const char *oid,
+                                                    uint64_t snapid)
+{
+  librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io;
+  return ctx->client->selfmanaged_snap_rollback_object(ctx, oid, ctx->snapc, snapid);
+}
+
 extern "C" int rados_ioctx_snap_list(rados_ioctx_t io, rados_snap_t *snaps,
                                    int maxlen)
 {