1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
#ifndef __CEPH_SNAP_TYPES_H
#define __CEPH_SNAP_TYPES_H
#include "include/types.h"
#include "include/fs_types.h"
namespace ceph {
class Formatter;
}
struct SnapRealmInfo {
mutable ceph_mds_snap_realm h;
std::vector<snapid_t> my_snaps;
std::vector<snapid_t> prior_parent_snaps; // before parent_since
SnapRealmInfo() {
// FIPS zeroization audit 20191115: this memset is not security related.
memset(&h, 0, sizeof(h));
}
SnapRealmInfo(inodeno_t ino_, snapid_t created_, snapid_t seq_, snapid_t current_parent_since_) {
// FIPS zeroization audit 20191115: this memset is not security related.
memset(&h, 0, sizeof(h));
h.ino = ino_;
h.created = created_;
h.seq = seq_;
h.parent_since = current_parent_since_;
}
inodeno_t ino() const { return inodeno_t(h.ino); }
inodeno_t parent() const { return inodeno_t(h.parent); }
snapid_t seq() const { return snapid_t(h.seq); }
snapid_t parent_since() const { return snapid_t(h.parent_since); }
snapid_t created() const { return snapid_t(h.created); }
void encode(ceph::buffer::list& bl) const;
void decode(ceph::buffer::list::const_iterator& bl);
void dump(ceph::Formatter *f) const;
static void generate_test_instances(std::list<SnapRealmInfo*>& o);
};
WRITE_CLASS_ENCODER(SnapRealmInfo)
struct SnapContext {
snapid_t seq; // 'time' stamp
std::vector<snapid_t> snaps; // existent snaps, in descending order
SnapContext() {}
SnapContext(snapid_t s, const std::vector<snapid_t>& v) : seq(s), snaps(v) {}
bool is_valid() const;
void clear() {
seq = 0;
snaps.clear();
}
bool empty() const { return seq == 0; }
void encode(ceph::buffer::list& bl) const {
using ceph::encode;
encode(seq, bl);
encode(snaps, bl);
}
void decode(ceph::buffer::list::const_iterator& bl) {
using ceph::decode;
decode(seq, bl);
decode(snaps, bl);
}
void dump(ceph::Formatter *f) const;
static void generate_test_instances(std::list<SnapContext*>& o);
};
WRITE_CLASS_ENCODER(SnapContext)
inline std::ostream& operator<<(std::ostream& out, const SnapContext& snapc) {
return out << snapc.seq << "=" << snapc.snaps;
}
//}
#endif
|