From: Dhairya Parmar Date: Wed, 6 Aug 2025 21:32:05 +0000 (+0530) Subject: common,mds: transmit SNAPDIR_VISIBILITY flag via SnapRealmInfoNew X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=100c8e1a7d4ef89971bbd5ff15292ab6c495526f;p=ceph-ci.git common,mds: transmit SNAPDIR_VISIBILITY flag via SnapRealmInfoNew at the time of building snap trace Conflicts: upstream ed6b71246137f9793f2d56b4d050b271a3da29fd made changes to generate_test_instances() which is not present downstream in ceph-9.0-rhel-patches, so had to adjust accordingly. Fixes: https://tracker.ceph.com/issues/71740 Signed-off-by: Dhairya Parmar (cherry picked from commit 9540f543011a9aa08886a14159323cc68722faa4) Resolves: https://jsw.ibm.com/browse/ISCE-1465 --- diff --git a/src/common/snap_types.cc b/src/common/snap_types.cc index dc634907b8a..ef0299f55f6 100644 --- a/src/common/snap_types.cc +++ b/src/common/snap_types.cc @@ -62,6 +62,7 @@ void SnapRealmInfoNew::encode(ceph::buffer::list& bl) const encode(info, bl); encode(last_modified, bl); encode(change_attr, bl); + encode(flags, bl); ENCODE_FINISH(bl); } @@ -72,6 +73,7 @@ void SnapRealmInfoNew::decode(ceph::buffer::list::const_iterator& bl) decode(info, bl); decode(last_modified, bl); decode(change_attr, bl); + decode(flags, bl); DECODE_FINISH(bl); } @@ -80,15 +82,16 @@ void SnapRealmInfoNew::dump(ceph::Formatter *f) const 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); } void SnapRealmInfoNew::generate_test_instances(std::list& o) { o.push_back(new SnapRealmInfoNew); - o.push_back(new SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 0)); - o.push_back(new SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 1)); + o.push_back(new SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 0, 1)); + o.push_back(new SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 1, 1)); o.back()->info.my_snaps.push_back(10); - o.push_back(new SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 5), utime_t(), 2)); + o.push_back(new 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); diff --git a/src/common/snap_types.h b/src/common/snap_types.h index 45502f9fa12..31a570f96e7 100644 --- a/src/common/snap_types.h +++ b/src/common/snap_types.h @@ -52,15 +52,20 @@ struct SnapRealmInfoNew { 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); } diff --git a/src/mds/SnapRealm.cc b/src/mds/SnapRealm.cc index 8fbcb474ece..2874cb279ce 100644 --- a/src/mds/SnapRealm.cc +++ b/src/mds/SnapRealm.cc @@ -445,7 +445,8 @@ void SnapRealm::build_snap_trace() const 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; @@ -480,7 +481,8 @@ void SnapRealm::build_snap_trace() const 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);