]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: add inline feature to MDS bootstrap incompat 44910/head
authorPatrick Donnelly <pdonnell@redhat.com>
Mon, 31 Jan 2022 22:58:55 +0000 (17:58 -0500)
committerPatrick Donnelly <pdonnell@redhat.com>
Sat, 5 Feb 2022 14:17:31 +0000 (09:17 -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>
(cherry picked from commit d341c5b7734b45568cd986f05d41e91e4cf4a4f7)

src/mds/FSMap.cc
src/mds/MDSMap.cc

index 1fd993dcadd23d06839a10b85cda8323394d0027..89de8bb82e031f515ac539095f6197e3a7b56035 100644 (file)
@@ -1056,6 +1056,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 9de050e3e811dedd8ce0ee40ad17f7f179a7f625..70214658ed683f5a35cac629862afbe3f6f28172 100644 (file)
@@ -93,6 +93,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);
@@ -906,6 +907,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;
@@ -913,6 +918,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);