From f00992c9c7b28a3d11d39cbaf864ef1ccc21322b Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Fri, 16 Jul 2010 14:04:57 -0700 Subject: [PATCH] librados: librados.hpp should be standalone removed references to object_t, declared librados::SnapContext --- src/include/librados.hpp | 10 ++++++++-- src/librados.cc | 9 ++++++--- src/rbd.cc | 13 ++++++++----- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/include/librados.hpp b/src/include/librados.hpp index 9c71b3a2e84c7..950b3941a72e2 100644 --- a/src/include/librados.hpp +++ b/src/include/librados.hpp @@ -36,6 +36,12 @@ namespace librados { typedef void *completion_t; typedef void (*callback_t)(completion_t cb, void *arg); + struct SnapContext { + snapid_t seq; + vector snaps; + }; + + class Rados { @@ -93,11 +99,11 @@ public: int snap_create(const pool_t pool, const char *snapname); int selfmanaged_snap_create(const pool_t pool, uint64_t *snapid); int snap_remove(const pool_t pool, const char *snapname); - int snap_rollback_object(const pool_t pool, const object_t oid, + int snap_rollback_object(const pool_t pool, const std::string& oid, const char *snapname); int selfmanaged_snap_remove(const pool_t pool, uint64_t snapid); int selfmanaged_snap_rollback_object(const pool_t pool, - const object_t oid, + const std::string& oid, SnapContext& snapc, uint64_t snapid); int snap_list(pool_t pool, std::vector *snaps); int snap_get_name(pool_t pool, snap_t snap, std::string *name); diff --git a/src/librados.cc b/src/librados.cc index b3bbe6a0deb5c..f6b8298c58851 100644 --- a/src/librados.cc +++ b/src/librados.cc @@ -1515,7 +1515,7 @@ int Rados::snap_remove(const rados_pool_t pool, const char *snapname) { return ((RadosClient *)client)->snap_remove(pool, snapname); } -int Rados::snap_rollback_object(const rados_pool_t pool, const object_t oid, +int Rados::snap_rollback_object(const rados_pool_t pool, const std::string& oid, const char *snapname) { if (!client) return -EINVAL; return ((RadosClient *)client)->snap_rollback_object(pool, oid, snapname); @@ -1535,11 +1535,14 @@ int Rados::selfmanaged_snap_remove(const rados_pool_t pool, } int Rados::selfmanaged_snap_rollback_object(const rados_pool_t pool, - const object_t oid, + const std::string& oid, SnapContext& snapc, uint64_t snapid) { + ::SnapContext sn; if (!client) return -EINVAL; - return ((RadosClient *)client)->selfmanaged_snap_rollback_object(pool, oid, snapc, snapid); + sn.seq = snapc.seq; + sn.snaps = snapc.snaps; + return ((RadosClient *)client)->selfmanaged_snap_rollback_object(pool, oid, sn, snapid); } void Rados::set_snap(rados_pool_t pool, snap_t seq) diff --git a/src/rbd.cc b/src/rbd.cc index 71927f23241c5..927405f31354c 100644 --- a/src/rbd.cc +++ b/src/rbd.cc @@ -274,14 +274,17 @@ static int tmap_rm(pools_t& pp, string& imgname) } static int rollback_image(pools_t& pp, struct rbd_obj_header_ondisk *header, - SnapContext& snapc, uint64_t snapid) + ::SnapContext& snapc, uint64_t snapid) { uint64_t numseg = get_max_block(header); for (uint64_t i = 0; i < numseg; i++) { int r; string oid = get_block_oid(header, i); - r = rados.selfmanaged_snap_rollback_object(pp.data, oid, snapc, snapid); + librados::SnapContext sn; + sn.seq = snapc.seq; + sn.snaps = snapc.snaps; + r = rados.selfmanaged_snap_rollback_object(pp.data, oid, sn, snapid); if (r < 0 && r != -ENOENT) return r; } @@ -518,7 +521,7 @@ static int do_add_snap(pools_t& pp, string& md_oid, const char *snapname) } static int do_get_snapc(pools_t& pp, string& md_oid, const char *snapname, - SnapContext& snapc, vector& snaps, uint64_t& snapid) + ::SnapContext& snapc, vector& snaps, uint64_t& snapid) { bufferlist bl, bl2; @@ -559,7 +562,7 @@ static int do_get_snapc(pools_t& pp, string& md_oid, const char *snapname, return 0; } -static int do_rollback_snap(pools_t& pp, string& md_oid, SnapContext& snapc, uint64_t snapid) +static int do_rollback_snap(pools_t& pp, string& md_oid, ::SnapContext& snapc, uint64_t snapid) { struct rbd_obj_header_ondisk header; int r = read_header(pp.md, md_oid, &header); @@ -915,7 +918,7 @@ int main(int argc, const char **argv) pools_t pp = { 0, 0, 0 }; snap_t snapid = 0; vector snaps; - SnapContext snapc; + ::SnapContext snapc; int opt_cmd = OPT_NO_CMD; -- 2.39.5