#include "mdstypes.h"
#include "MDSContext.h"
#include "common/Formatter.h"
+#include "common/StackStringStream.h"
const mds_gid_t MDS_GID_NONE = mds_gid_t(0);
f->dump_stream("mtime") << mtime;
f->dump_unsigned("num_files", nfiles);
f->dump_unsigned("num_subdirs", nsubdirs);
+ f->dump_unsigned("change_attr", change_attr);
}
-void frag_info_t::generate_test_instances(list<frag_info_t*>& ls)
+void frag_info_t::generate_test_instances(std::list<frag_info_t*>& ls)
{
ls.push_back(new frag_info_t);
ls.push_back(new frag_info_t);
f->dump_stream("rctime") << rctime;
}
-void nest_info_t::generate_test_instances(list<nest_info_t*>& ls)
+void nest_info_t::generate_test_instances(std::list<nest_info_t*>& ls)
{
ls.push_back(new nest_info_t);
ls.push_back(new nest_info_t);
f->dump_int("max_files", max_files);
}
-void quota_info_t::generate_test_instances(list<quota_info_t *>& ls)
+void quota_info_t::generate_test_instances(std::list<quota_info_t *>& ls)
{
ls.push_back(new quota_info_t);
ls.push_back(new quota_info_t);
f->dump_unsigned("follows", follows);
}
-void client_writeable_range_t::generate_test_instances(list<client_writeable_range_t*>& ls)
+void client_writeable_range_t::generate_test_instances(std::list<client_writeable_range_t*>& ls)
{
ls.push_back(new client_writeable_range_t);
ls.push_back(new client_writeable_range_t);
f->close_section();
}
-void fnode_t::generate_test_instances(list<fnode_t*>& ls)
+void fnode_t::generate_test_instances(std::list<fnode_t*>& ls)
{
ls.push_back(new fnode_t);
ls.push_back(new fnode_t);
f->close_section();
}
-void old_rstat_t::generate_test_instances(list<old_rstat_t*>& ls)
+void old_rstat_t::generate_test_instances(std::list<old_rstat_t*>& ls)
{
ls.push_back(new old_rstat_t());
ls.push_back(new old_rstat_t());
}
}
+void feature_bitset_t::dump(Formatter *f) const {
+ CachedStackStringStream css;
+ print(*css);
+ f->dump_string("feature_bits", css->strv());
+}
+
void feature_bitset_t::print(ostream& out) const
{
std::ios_base::fmtflags f(out.flags());
out.flags(f);
}
+/*
+ * metric_spec_t
+ */
+void metric_spec_t::encode(bufferlist& bl) const {
+ using ceph::encode;
+ ENCODE_START(1, 1, bl);
+ encode(metric_flags, bl);
+ ENCODE_FINISH(bl);
+}
+
+void metric_spec_t::decode(bufferlist::const_iterator &p) {
+ using ceph::decode;
+ DECODE_START(1, p);
+ decode(metric_flags, p);
+ DECODE_FINISH(p);
+}
+
+void metric_spec_t::dump(Formatter *f) const {
+ f->dump_object("metric_flags", metric_flags);
+}
+
+void metric_spec_t::print(ostream& out) const
+{
+ out << "{metric_flags: '" << metric_flags << "'}";
+}
+
/*
* client_metadata_t
*/
void client_metadata_t::encode(bufferlist& bl) const
{
- ENCODE_START(2, 1, bl);
+ ENCODE_START(3, 1, bl);
encode(kv_map, bl);
encode(features, bl);
+ encode(metric_spec, bl);
ENCODE_FINISH(bl);
}
void client_metadata_t::decode(bufferlist::const_iterator& p)
{
- DECODE_START(2, p);
+ DECODE_START(3, p);
decode(kv_map, p);
if (struct_v >= 2)
decode(features, p);
+ if (struct_v >= 3) {
+ decode(metric_spec, p);
+ }
DECODE_FINISH(p);
}
void client_metadata_t::dump(Formatter *f) const
{
- f->dump_stream("features") << features;
+ f->dump_object("client_features", features);
+ f->dump_object("metric_spec", metric_spec);
for (const auto& [name, val] : kv_map)
f->dump_string(name.c_str(), val);
}
f->open_array_section("prealloc_inos");
for (const auto& [start, len] : prealloc_inos) {
f->open_object_section("ino_range");
- f->dump_unsigned("start", start);
+ f->dump_stream("start") << start;
f->dump_unsigned("length", len);
f->close_section();
}
f->open_array_section("used_inos");
for (const auto& [start, len] : used_inos) {
f->open_object_section("ino_range");
- f->dump_unsigned("start", start);
+ f->dump_stream("start") << start;
f->dump_unsigned("length", len);
f->close_section();
}
f->dump_object("client_metadata", client_metadata);
}
-void session_info_t::generate_test_instances(list<session_info_t*>& ls)
+void session_info_t::generate_test_instances(std::list<session_info_t*>& ls)
{
ls.push_back(new session_info_t);
ls.push_back(new session_info_t);
f->dump_unsigned("snapid", snapid);
}
-void string_snap_t::generate_test_instances(list<string_snap_t*>& ls)
+void string_snap_t::generate_test_instances(std::list<string_snap_t*>& ls)
{
ls.push_back(new string_snap_t);
ls.push_back(new string_snap_t);
f->dump_unsigned("snapid", snapid);
}
-void MDSCacheObjectInfo::generate_test_instances(list<MDSCacheObjectInfo*>& ls)
+void MDSCacheObjectInfo::generate_test_instances(std::list<MDSCacheObjectInfo*>& ls)
{
ls.push_back(new MDSCacheObjectInfo);
ls.push_back(new MDSCacheObjectInfo);
f->dump_unsigned("tid", tid);
}
-void mds_table_pending_t::generate_test_instances(list<mds_table_pending_t*>& ls)
+void mds_table_pending_t::generate_test_instances(std::list<mds_table_pending_t*>& ls)
{
ls.push_back(new mds_table_pending_t);
ls.push_back(new mds_table_pending_t);
f->close_section();
}
-void inode_load_vec_t::generate_test_instances(list<inode_load_vec_t*>& ls)
+void inode_load_vec_t::generate_test_instances(std::list<inode_load_vec_t*>& ls)
{
ls.push_back(new inode_load_vec_t(DecayRate()));
}
f->dump_string("has file locks", capinfo.flock_len ? "true" : "false");
}
-void cap_reconnect_t::generate_test_instances(list<cap_reconnect_t*>& ls)
+void cap_reconnect_t::generate_test_instances(std::list<cap_reconnect_t*>& ls)
{
ls.push_back(new cap_reconnect_t);
ls.back()->path = "/test/path";
f->dump_int("parent", realm.parent);
}
-void snaprealm_reconnect_t::generate_test_instances(list<snaprealm_reconnect_t*>& ls)
+void snaprealm_reconnect_t::generate_test_instances(std::list<snaprealm_reconnect_t*>& ls)
{
ls.push_back(new snaprealm_reconnect_t);
ls.back()->realm.ino = 0x10000000001ULL;
ls.back()->realm.seq = 2;
ls.back()->realm.parent = 1;
}
-
-
-ostream& operator<<(ostream &out, const mds_role_t &role)
-{
- out << role.fscid << ":" << role.rank;
- return out;
-}
-