]> git.proxmox.com Git - ceph.git/blob - ceph/src/mds/FSMapUser.cc
63a58acc835aa7d07522befcb4de5dbe1273239c
[ceph.git] / ceph / src / mds / FSMapUser.cc
1 #include "FSMapUser.h"
2
3 void FSMapUser::encode(ceph::buffer::list& bl, uint64_t features) const
4 {
5 ENCODE_START(1, 1, bl);
6 encode(epoch, bl);
7 encode(legacy_client_fscid, bl);
8 std::vector<fs_info_t> fs_list;
9 for (auto p = filesystems.begin(); p != filesystems.end(); ++p)
10 fs_list.push_back(p->second);
11 encode(fs_list, bl, features);
12 ENCODE_FINISH(bl);
13 }
14
15 void FSMapUser::decode(ceph::buffer::list::const_iterator& p)
16 {
17 DECODE_START(1, p);
18 decode(epoch, p);
19 decode(legacy_client_fscid, p);
20 std::vector<fs_info_t> fs_list;
21 decode(fs_list, p);
22 filesystems.clear();
23 for (auto p = fs_list.begin(); p != fs_list.end(); ++p)
24 filesystems[p->cid] = *p;
25 DECODE_FINISH(p);
26 }
27
28 void FSMapUser::fs_info_t::encode(ceph::buffer::list& bl, uint64_t features) const
29 {
30 ENCODE_START(1, 1, bl);
31 encode(cid, bl);
32 encode(name, bl);
33 ENCODE_FINISH(bl);
34 }
35
36 void FSMapUser::fs_info_t::decode(ceph::buffer::list::const_iterator& p)
37 {
38 DECODE_START(1, p);
39 decode(cid, p);
40 decode(name, p);
41 DECODE_FINISH(p);
42 }
43
44 void FSMapUser::generate_test_instances(std::list<FSMapUser*>& ls)
45 {
46 FSMapUser *m = new FSMapUser();
47 m->epoch = 2;
48 m->legacy_client_fscid = 1;
49 m->filesystems[1].cid = 1;
50 m->filesystems[2].name = "cephfs2";
51 m->filesystems[2].cid = 2;
52 m->filesystems[1].name = "cephfs1";
53 ls.push_back(m);
54 }
55
56
57 void FSMapUser::print(std::ostream& out) const
58 {
59 out << "e" << epoch << std::endl;
60 out << "legacy_client_fscid: " << legacy_client_fscid << std::endl;
61 for (auto &p : filesystems)
62 out << " id " << p.second.cid << " name " << p.second.name << std::endl;
63 }
64
65 void FSMapUser::print_summary(ceph::Formatter *f, std::ostream *out)
66 {
67 std::map<mds_role_t,std::string> by_rank;
68 std::map<std::string,int> by_state;
69
70 if (f) {
71 f->dump_unsigned("epoch", get_epoch());
72 for (auto &p : filesystems) {
73 f->dump_unsigned("id", p.second.cid);
74 f->dump_string("name", p.second.name);
75 }
76 } else {
77 *out << "e" << get_epoch() << ":";
78 for (auto &p : filesystems)
79 *out << " " << p.second.name << "(" << p.second.cid << ")";
80 }
81 }