o.push_back(new fid_t(123, 3278));
}
+// fid_backpointer_t
+
+void fid_backpointer_t::encode(bufferlist& bl) const
+{
+ ENCODE_START(1, 1, bl);
+ ::encode(oid, bl);
+ ::encode(nid, bl);
+ ::encode(offset, bl);
+ ENCODE_FINISH(bl);
+}
+
+void fid_backpointer_t::decode(bufferlist::iterator& p)
+{
+ DECODE_START(1, p);
+ ::decode(oid, p);
+ ::decode(nid, p);
+ ::decode(offset, p);
+ DECODE_FINISH(p);
+}
+
+void fid_backpointer_t::dump(Formatter *f) const
+{
+ f->dump_object("oid", oid);
+ f->dump_unsigned("nid", nid);
+ f->dump_unsigned("offset", offset);
+}
+
+void fid_backpointer_t::generate_test_instances(list<fid_backpointer_t*>& o)
+{
+ o.push_back(new fid_backpointer_t);
+ o.push_back(new fid_backpointer_t);
+ o.back()->oid.hobj.oid.name = "foo";
+ o.back()->nid = 12;
+ o.back()->offset = 123;
+}
+
+ostream& operator<<(ostream& out, const fid_backpointer_t& bp)
+{
+ return out << "fidbp(" << bp.oid
+ << " nid " << bp.nid
+ << " offset " << bp.offset << ")";
+}
+
// fragment_t
void fragment_t::encode(bufferlist& bl) const
#include <ostream>
#include "include/types.h"
+#include "common/hobject.h"
namespace ceph {
class Formatter;
return !(a == b);
}
+struct fid_backpointer_t {
+ ghobject_t oid;
+ uint64_t nid;
+ uint64_t offset;
+
+ fid_backpointer_t() : nid(0), offset(0) {}
+ fid_backpointer_t(const ghobject_t& o, uint64_t n, uint64_t off)
+ : oid(o), nid(n), offset(off) {}
+
+ void encode(bufferlist& bl) const;
+ void decode(bufferlist::iterator& p);
+ void dump(Formatter *f) const;
+ static void generate_test_instances(list<fid_backpointer_t*>& o);
+};
+WRITE_CLASS_ENCODER(fid_backpointer_t)
+
+ostream& operator<<(ostream& out, const fid_backpointer_t& bp);
+
/// fragment: a byte extent backed by a file
struct fragment_t {
uint32_t offset; ///< offset in file to first byte of this fragment
uint64_t nid;
vector<overlay_t> overlays;
+ wal_op_t() : offset(0), length(0), nid(0) {}
+
void encode(bufferlist& bl) const;
void decode(bufferlist::iterator& p);
void dump(Formatter *f) const;