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