]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
common,mds: transmit SNAPDIR_VISIBILITY flag via SnapRealmInfoNew
authorDhairya Parmar <dparmar@redhat.com>
Wed, 6 Aug 2025 21:32:05 +0000 (03:02 +0530)
committerDhairya Parmar <dparmar@redhat.com>
Mon, 29 Sep 2025 08:40:37 +0000 (14:10 +0530)
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 <dparmar@redhat.com>
(cherry picked from commit 9540f543011a9aa08886a14159323cc68722faa4)
Resolves: https://jsw.ibm.com/browse/ISCE-1465

src/common/snap_types.cc
src/common/snap_types.h
src/mds/SnapRealm.cc

index dc634907b8ae61921bcfcc3eaaeaf16a8591052c..ef0299f55f6beb8cdf1d9bdb89312946e9fa4ee8 100644 (file)
@@ -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<SnapRealmInfoNew*>& 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);
index 45502f9fa129b45ae1e6aa95ce01869d1f0e0a21..31a570f96e783e1cb05255b054898313f1350716 100644 (file)
@@ -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); }
index 8fbcb474eceb26e9090786e591bb4cdb31d97a88..2874cb279ce31d45f3ef1d94877d00338aeb57e2 100644 (file)
@@ -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);