Skip to content

Commit 6520c6d

Browse files
committed
common,mds: transmit SNAPDIR_VISIBILITY flag via SnapRealmInfoNew
at the time of building snap trace Fixes: https://tracker.ceph.com/issues/71740 Signed-off-by: Dhairya Parmar <[email protected]>
1 parent 7fb744f commit 6520c6d

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

src/common/snap_types.cc

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ void SnapRealmInfoNew::encode(ceph::buffer::list& bl) const
6565
encode(info, bl);
6666
encode(last_modified, bl);
6767
encode(change_attr, bl);
68+
encode(flags, bl);
6869
ENCODE_FINISH(bl);
6970
}
7071

@@ -75,6 +76,7 @@ void SnapRealmInfoNew::decode(ceph::buffer::list::const_iterator& bl)
7576
decode(info, bl);
7677
decode(last_modified, bl);
7778
decode(change_attr, bl);
79+
decode(flags, bl);
7880
DECODE_FINISH(bl);
7981
}
8082

@@ -83,16 +85,17 @@ void SnapRealmInfoNew::dump(ceph::Formatter *f) const
8385
info.dump(f);
8486
f->dump_stream("last_modified") << last_modified;
8587
f->dump_unsigned("change_attr", change_attr);
88+
f->dump_bool("is_snapdir_visible", flags & SNAPDIR_VISIBILITY);
8689
}
8790

8891
std::list<SnapRealmInfoNew> SnapRealmInfoNew::generate_test_instances()
8992
{
9093
std::list<SnapRealmInfoNew> o;
9194
o.emplace_back();
92-
o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 0));
93-
o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 1));
95+
o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 0, 1));
96+
o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 1, 1));
9497
o.back().info.my_snaps.push_back(10);
95-
o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 5), utime_t(), 2));
98+
o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 5), utime_t(), 2, 1));
9699
o.back().info.my_snaps.push_back(10);
97100
o.back().info.prior_parent_snaps.push_back(3);
98101
o.back().info.prior_parent_snaps.push_back(5);

src/common/snap_types.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,20 @@ struct SnapRealmInfoNew {
5151
SnapRealmInfo info;
5252
utime_t last_modified;
5353
uint64_t change_attr;
54+
uint32_t flags;
55+
enum {
56+
SNAPDIR_VISIBILITY = 4,
57+
};
5458

5559
SnapRealmInfoNew() {
5660
}
5761

58-
SnapRealmInfoNew(const SnapRealmInfo &info_, utime_t last_modified_, uint64_t change_attr_) {
62+
SnapRealmInfoNew(const SnapRealmInfo &info_, utime_t last_modified_, uint64_t change_attr_, __u32 flags_) {
5963
// FIPS zeroization audit 20191115: this memset is not security related.
6064
info = info_;
6165
last_modified = last_modified_;
6266
change_attr = change_attr_;
67+
flags = flags_;
6368
}
6469

6570
inodeno_t ino() const { return inodeno_t(info.h.ino); }

src/mds/SnapRealm.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,8 @@ void SnapRealm::build_snap_trace() const
446446

447447
dout(10) << "build_snap_trace my_snaps " << info.my_snaps << dendl;
448448

449-
SnapRealmInfoNew ninfo(info, srnode.last_modified, srnode.change_attr);
449+
SnapRealmInfoNew ninfo(info, srnode.last_modified,
450+
srnode.change_attr, srnode.flags);
450451
encode(info, cached_snap_trace);
451452
encode(ninfo, cached_snap_trace_new);
452453
return;
@@ -481,7 +482,8 @@ void SnapRealm::build_snap_trace() const
481482
info.my_snaps.push_back(p->first);
482483
dout(10) << "build_snap_trace my_snaps " << info.my_snaps << dendl;
483484

484-
SnapRealmInfoNew ninfo(info, srnode.last_modified, srnode.change_attr);
485+
SnapRealmInfoNew ninfo(info, srnode.last_modified,
486+
srnode.change_attr, srnode.flags);
485487

486488
encode(info, cached_snap_trace);
487489
encode(ninfo, cached_snap_trace_new);

0 commit comments

Comments
 (0)