From 19fcec84d8d7d21e796c7624e521b60d28ee21ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:45:59 +0200 Subject: Adding upstream version 16.2.11+ds. Signed-off-by: Daniel Baumann --- src/mds/FSMapUser.cc | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/mds/FSMapUser.cc (limited to 'src/mds/FSMapUser.cc') diff --git a/src/mds/FSMapUser.cc b/src/mds/FSMapUser.cc new file mode 100644 index 000000000..63a58acc8 --- /dev/null +++ b/src/mds/FSMapUser.cc @@ -0,0 +1,81 @@ +#include "FSMapUser.h" + +void FSMapUser::encode(ceph::buffer::list& bl, uint64_t features) const +{ + ENCODE_START(1, 1, bl); + encode(epoch, bl); + encode(legacy_client_fscid, bl); + std::vector fs_list; + for (auto p = filesystems.begin(); p != filesystems.end(); ++p) + fs_list.push_back(p->second); + encode(fs_list, bl, features); + ENCODE_FINISH(bl); +} + +void FSMapUser::decode(ceph::buffer::list::const_iterator& p) +{ + DECODE_START(1, p); + decode(epoch, p); + decode(legacy_client_fscid, p); + std::vector fs_list; + decode(fs_list, p); + filesystems.clear(); + for (auto p = fs_list.begin(); p != fs_list.end(); ++p) + filesystems[p->cid] = *p; + DECODE_FINISH(p); +} + +void FSMapUser::fs_info_t::encode(ceph::buffer::list& bl, uint64_t features) const +{ + ENCODE_START(1, 1, bl); + encode(cid, bl); + encode(name, bl); + ENCODE_FINISH(bl); +} + +void FSMapUser::fs_info_t::decode(ceph::buffer::list::const_iterator& p) +{ + DECODE_START(1, p); + decode(cid, p); + decode(name, p); + DECODE_FINISH(p); +} + +void FSMapUser::generate_test_instances(std::list& ls) +{ + FSMapUser *m = new FSMapUser(); + m->epoch = 2; + m->legacy_client_fscid = 1; + m->filesystems[1].cid = 1; + m->filesystems[2].name = "cephfs2"; + m->filesystems[2].cid = 2; + m->filesystems[1].name = "cephfs1"; + ls.push_back(m); +} + + +void FSMapUser::print(std::ostream& out) const +{ + out << "e" << epoch << std::endl; + out << "legacy_client_fscid: " << legacy_client_fscid << std::endl; + for (auto &p : filesystems) + out << " id " << p.second.cid << " name " << p.second.name << std::endl; +} + +void FSMapUser::print_summary(ceph::Formatter *f, std::ostream *out) +{ + std::map by_rank; + std::map by_state; + + if (f) { + f->dump_unsigned("epoch", get_epoch()); + for (auto &p : filesystems) { + f->dump_unsigned("id", p.second.cid); + f->dump_string("name", p.second.name); + } + } else { + *out << "e" << get_epoch() << ":"; + for (auto &p : filesystems) + *out << " " << p.second.name << "(" << p.second.cid << ")"; + } +} -- cgit v1.2.3