]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: add inline feature to MDS bootstrap incompat 44851/head
authorPatrick Donnelly <pdonnell@redhat.com>
Mon, 31 Jan 2022 22:58:55 +0000 (17:58 -0500)
committerPatrick Donnelly <pdonnell@redhat.com>
Thu, 3 Feb 2022 16:02:02 +0000 (11:02 -0500)
File systems that had inline data enabled at some point would have this
bit in the CompatSet "incompat" set. This would conflict during upgrade
with the default v16.2.4 CompatSet assigned to existing (16.2.4-) MDS.
Subsequently, this would cause an assertion in FSMap::sanity during
pending map creation.

This bit will get added anyway during the upgrade process so might as
well add it to the MDS CompatSet during bootstrap.

Fixes: https://tracker.ceph.com/issues/54081
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
src/mds/FSMap.cc
src/mds/MDSMap.cc

index 163a6c2f51e41e094ce8a6a7e0133de490d51c97..217a1e3307c544abd6d0589902212f2e00b724be 100644 (file)
@@ -1066,6 +1066,10 @@ void FSMap::insert(const MDSMap::mds_info_t &new_info)
     // or older) MDS.
     info.compat = MDSMap::get_compat_set_v16_2_4();
   }
+  /* TODO remove after R is released
+   * Insert INLINE; see comment in MDSMap::decode.
+   */
+  info.compat.incompat.insert(MDS_FEATURE_INCOMPAT_INLINE);
   standby_epochs[new_info.global_id] = epoch;
 }
 
index 8aea8d01982548162260bf930e3126b795892a0b..3a417b02ab9b03bdc37ab88cc4f1a6cc39b74667 100644 (file)
@@ -94,6 +94,7 @@ CompatSet MDSMap::get_compat_set_v16_2_4() {
   feature_incompat.insert(MDS_FEATURE_INCOMPAT_DIRINODE);
   feature_incompat.insert(MDS_FEATURE_INCOMPAT_ENCODING);
   feature_incompat.insert(MDS_FEATURE_INCOMPAT_OMAPDIRFRAG);
+  feature_incompat.insert(MDS_FEATURE_INCOMPAT_INLINE);
   feature_incompat.insert(MDS_FEATURE_INCOMPAT_NOANCHOR);
   feature_incompat.insert(MDS_FEATURE_INCOMPAT_FILE_LAYOUT_V2);
   feature_incompat.insert(MDS_FEATURE_INCOMPAT_SNAPREALM_V2);
@@ -931,6 +932,10 @@ void MDSMap::decode(bufferlist::const_iterator& p)
     }
   }
 
+  /* All MDS since at least v14.0.0 understand INLINE */
+  /* TODO: remove after R is released */
+  compat.incompat.insert(MDS_FEATURE_INCOMPAT_INLINE);
+
   for (auto& p: mds_info) {
     static const CompatSet empty;
     auto& info = p.second;
@@ -938,6 +943,9 @@ void MDSMap::decode(bufferlist::const_iterator& p)
       /* bootstrap old compat; mds_info_t::decode does not have access to MDSMap */
       info.compat = compat;
     }
+    /* All MDS since at least v14.0.0 understand INLINE */
+    /* TODO: remove after R is released */
+    info.compat.incompat.insert(MDS_FEATURE_INCOMPAT_INLINE);
   }
 
   DECODE_FINISH(p);