encode(info, bl);
encode(last_modified, bl);
encode(change_attr, bl);
+ encode(flags, bl);
ENCODE_FINISH(bl);
}
decode(info, bl);
decode(last_modified, bl);
decode(change_attr, bl);
+ decode(flags, bl);
DECODE_FINISH(bl);
}
info.dump(f);
f->dump_stream("last_modified") << last_modified;
f->dump_unsigned("change_attr", change_attr);
+ f->dump_bool("is_snapdir_visible", flags & SNAPDIR_VISIBILITY);
}
std::list<SnapRealmInfoNew> SnapRealmInfoNew::generate_test_instances()
{
std::list<SnapRealmInfoNew> o;
o.emplace_back();
- o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 0));
- o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 1));
+ o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 0, 1));
+ o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 1, 1));
o.back().info.my_snaps.push_back(10);
- o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 5), utime_t(), 2));
+ o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 5), utime_t(), 2, 1));
o.back().info.my_snaps.push_back(10);
o.back().info.prior_parent_snaps.push_back(3);
o.back().info.prior_parent_snaps.push_back(5);
SnapRealmInfo info;
utime_t last_modified;
uint64_t change_attr;
+ uint32_t flags;
+ enum {
+ SNAPDIR_VISIBILITY = 4,
+ };
SnapRealmInfoNew() {
}
- SnapRealmInfoNew(const SnapRealmInfo &info_, utime_t last_modified_, uint64_t change_attr_) {
+ SnapRealmInfoNew(const SnapRealmInfo &info_, utime_t last_modified_, uint64_t change_attr_, __u32 flags_) {
// FIPS zeroization audit 20191115: this memset is not security related.
info = info_;
last_modified = last_modified_;
change_attr = change_attr_;
+ flags = flags_;
}
inodeno_t ino() const { return inodeno_t(info.h.ino); }
dout(10) << "build_snap_trace my_snaps " << info.my_snaps << dendl;
- SnapRealmInfoNew ninfo(info, srnode.last_modified, srnode.change_attr);
+ SnapRealmInfoNew ninfo(info, srnode.last_modified,
+ srnode.change_attr, srnode.flags);
encode(info, cached_snap_trace);
encode(ninfo, cached_snap_trace_new);
return;
info.my_snaps.push_back(p->first);
dout(10) << "build_snap_trace my_snaps " << info.my_snaps << dendl;
- SnapRealmInfoNew ninfo(info, srnode.last_modified, srnode.change_attr);
+ SnapRealmInfoNew ninfo(info, srnode.last_modified,
+ srnode.change_attr, srnode.flags);
encode(info, cached_snap_trace);
encode(ninfo, cached_snap_trace_new);