#include "librbd/journal/Types.h"
#include "include/assert.h"
#include "include/stringify.h"
+#include "include/types.h"
#include "common/Formatter.h"
namespace librbd {
void MirrorPeerSyncPoint::encode(bufferlist& bl) const {
::encode(snap_name, bl);
+ ::encode(from_snap_name, bl);
::encode(object_number, bl);
}
void MirrorPeerSyncPoint::decode(__u8 version, bufferlist::iterator& it) {
::decode(snap_name, it);
+ ::decode(from_snap_name, it);
::decode(object_number, it);
}
void MirrorPeerSyncPoint::dump(Formatter *f) const {
f->dump_string("snap_name", snap_name);
+ f->dump_string("from_snap_name", from_snap_name);
if (object_number) {
f->dump_unsigned("object_number", *object_number);
}
o.push_back(new ClientData(ImageClientMeta()));
o.push_back(new ClientData(ImageClientMeta(123)));
o.push_back(new ClientData(MirrorPeerClientMeta()));
- o.push_back(new ClientData(MirrorPeerClientMeta("image_id", {{"snap 1", 123}},
+ o.push_back(new ClientData(MirrorPeerClientMeta("image_id",
+ {{"snap 2", "snap 1", 123}},
{{1, 2}, {3, 4}})));
o.push_back(new ClientData(CliClientMeta()));
}
return out;
}
+std::ostream &operator<<(std::ostream &out, const MirrorPeerSyncPoint &sync) {
+ out << "[snap_name=" << sync.snap_name << ", "
+ << "from_snap_name=" << sync.from_snap_name;
+ if (sync.object_number) {
+ out << ", " << *sync.object_number;
+ }
+ out << "]";
+ return out;
+}
+
+std::ostream &operator<<(std::ostream &out, const MirrorPeerClientMeta &meta) {
+ out << "[image_id=" << meta.image_id << ", "
+ << "sync_points=[";
+ std::string delimiter;
+ for (auto &sync_point : meta.sync_points) {
+ out << delimiter << "[" << sync_point << "]";
+ delimiter = ", ";
+ }
+ out << "], snap_seqs=[";
+ delimiter = "";
+ for (auto &pair : meta.snap_seqs) {
+ out << delimiter << "["
+ << "local_snap_seq=" << pair.first << ", "
+ << "peer_snap_seq" << pair.second << "]";
+ delimiter = ", ";
+ }
+ out << "]";
+ return out;
+}
+
std::ostream &operator<<(std::ostream &out, const TagData &tag_data) {
out << "["
<< "mirror_uuid=" << tag_data.mirror_uuid << ", "
typedef boost::optional<uint64_t> ObjectNumber;
std::string snap_name;
+ std::string from_snap_name;
ObjectNumber object_number;
- MirrorPeerSyncPoint() : object_number(boost::none) {
+ MirrorPeerSyncPoint() : MirrorPeerSyncPoint("", "", boost::none) {
}
MirrorPeerSyncPoint(const std::string &snap_name,
const ObjectNumber &object_number)
- : snap_name(snap_name), object_number(object_number) {
+ : MirrorPeerSyncPoint(snap_name, "", object_number) {
+ }
+ MirrorPeerSyncPoint(const std::string &snap_name,
+ const std::string &from_snap_name,
+ const ObjectNumber &object_number)
+ : snap_name(snap_name), from_snap_name(from_snap_name),
+ object_number(object_number) {
}
void encode(bufferlist& bl) const;
std::ostream &operator<<(std::ostream &out, const EventType &type);
std::ostream &operator<<(std::ostream &out, const ClientMetaType &type);
std::ostream &operator<<(std::ostream &out, const ImageClientMeta &meta);
+std::ostream &operator<<(std::ostream &out, const MirrorPeerSyncPoint &sync);
+std::ostream &operator<<(std::ostream &out, const MirrorPeerClientMeta &meta);
std::ostream &operator<<(std::ostream &out, const TagData &tag_data);
} // namespace journal