From 8168adf8d89f244f70780ea609596f67ff77afba Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Wed, 5 Feb 2020 09:59:32 -0500 Subject: [PATCH] cls/rbd: store primary to non-primary snap mapping in mirror snapshot The mirror non-primary snapshot namespace already stores the copy progress so might as well store the required snapshot mapping table. Signed-off-by: Jason Dillaman --- src/cls/rbd/cls_rbd_types.cc | 6 +++++- src/cls/rbd/cls_rbd_types.h | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/cls/rbd/cls_rbd_types.cc b/src/cls/rbd/cls_rbd_types.cc index 0a409828760..e72821ccff0 100644 --- a/src/cls/rbd/cls_rbd_types.cc +++ b/src/cls/rbd/cls_rbd_types.cc @@ -745,6 +745,7 @@ void MirrorNonPrimarySnapshotNamespace::encode(bufferlist& bl) const { encode(primary_snap_id, bl); encode(copied, bl); encode(last_copied_object_number, bl); + encode(snap_seqs, bl); } void MirrorNonPrimarySnapshotNamespace::decode(bufferlist::const_iterator& it) { @@ -753,6 +754,7 @@ void MirrorNonPrimarySnapshotNamespace::decode(bufferlist::const_iterator& it) { decode(primary_snap_id, it); decode(copied, it); decode(last_copied_object_number, it); + decode(snap_seqs, it); } void MirrorNonPrimarySnapshotNamespace::dump(Formatter *f) const { @@ -760,6 +762,7 @@ void MirrorNonPrimarySnapshotNamespace::dump(Formatter *f) const { f->dump_unsigned("primary_snap_id", primary_snap_id); f->dump_bool("copied", copied); f->dump_unsigned("last_copied_object_number", last_copied_object_number); + f->dump_stream("snap_seqs") << snap_seqs; } class EncodeSnapshotNamespaceVisitor : public boost::static_visitor { @@ -985,7 +988,8 @@ std::ostream& operator<<(std::ostream& os, << "primary_mirror_uuid=" << ns.primary_mirror_uuid << ", " << "primary_snap_id=" << ns.primary_snap_id << ", " << "copied=" << ns.copied << ", " - << "last_copied_object_number=" << ns.last_copied_object_number + << "last_copied_object_number=" << ns.last_copied_object_number << ", " + << "snap_seqs=" << ns.snap_seqs << "]"; return os; } diff --git a/src/cls/rbd/cls_rbd_types.h b/src/cls/rbd/cls_rbd_types.h index 2416b8e3c16..d4e5f2be5a4 100644 --- a/src/cls/rbd/cls_rbd_types.h +++ b/src/cls/rbd/cls_rbd_types.h @@ -541,6 +541,8 @@ struct MirrorPrimarySnapshotNamespace { } }; +typedef std::map SnapSeqs; + struct MirrorNonPrimarySnapshotNamespace { static const SnapshotNamespaceType SNAPSHOT_NAMESPACE_TYPE = SNAPSHOT_NAMESPACE_TYPE_MIRROR_NON_PRIMARY; @@ -549,6 +551,7 @@ struct MirrorNonPrimarySnapshotNamespace { snapid_t primary_snap_id = CEPH_NOSNAP; bool copied = false; uint64_t last_copied_object_number = 0; + SnapSeqs snap_seqs; MirrorNonPrimarySnapshotNamespace() { } -- 2.39.5