]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: Shutdown old mds when inline enable
authorLi Wang <liwang@ubuntukylin.com>
Tue, 14 Jan 2014 06:51:31 +0000 (14:51 +0800)
committerYunchuan Wen <yunchuanwen@ubuntukylin.com>
Mon, 27 Jan 2014 07:25:00 +0000 (15:25 +0800)
Signed-off-by: Yunchuan Wen <yunchuanwen@ubuntukylin.com>
Signed-off-by: Li Wang <liwang@ubuntukylin.com>
src/mds/MDS.cc
src/mds/MDSMap.cc
src/mds/MDSMap.h
src/mon/MDSMonitor.cc

index c9df062eb77635e094b525ebdbc2e8e108fb9636..b8ae455a60d02a29798902e78e519a3165319c18 100644 (file)
@@ -641,7 +641,8 @@ void MDS::beacon_send()
   beacon->set_standby_for_name(standby_for_name);
 
   // include _my_ feature set
-  CompatSet mdsmap_compat(get_mdsmap_compat_set());
+  CompatSet mdsmap_compat(get_mdsmap_compat_set_default());
+  mdsmap_compat.merge(mdsmap->compat);
   beacon->set_compat(mdsmap_compat);
 
   monc->send_mon_message(beacon);
@@ -864,7 +865,7 @@ void MDS::handle_mds_map(MMDSMap *m)
   monc->sub_got("mdsmap", mdsmap->get_epoch());
 
   // verify compatset
-  CompatSet mdsmap_compat(get_mdsmap_compat_set());
+  CompatSet mdsmap_compat(get_mdsmap_compat_set_all());
   dout(10) << "     my compat " << mdsmap_compat << dendl;
   dout(10) << " mdsmap compat " << mdsmap->compat << dendl;
   if (!mdsmap_compat.writeable(mdsmap->compat)) {
index 15c2f3291f6f0dbba95882f2fe1bc2ec1b35e023..c641358c4a2d30759c30ec32135dcbe1fd0b14f2 100644 (file)
@@ -20,7 +20,22 @@ using std::stringstream;
 
 
 // features
-CompatSet get_mdsmap_compat_set() {
+CompatSet get_mdsmap_compat_set_all() {
+  CompatSet::FeatureSet feature_compat;
+  CompatSet::FeatureSet feature_ro_compat;
+  CompatSet::FeatureSet feature_incompat;
+  feature_incompat.insert(MDS_FEATURE_INCOMPAT_BASE);
+  feature_incompat.insert(MDS_FEATURE_INCOMPAT_CLIENTRANGES);
+  feature_incompat.insert(MDS_FEATURE_INCOMPAT_FILELAYOUT);
+  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);
+
+  return CompatSet(feature_compat, feature_ro_compat, feature_incompat);
+}
+
+CompatSet get_mdsmap_compat_set_default() {
   CompatSet::FeatureSet feature_compat;
   CompatSet::FeatureSet feature_ro_compat;
   CompatSet::FeatureSet feature_incompat;
@@ -136,7 +151,7 @@ void MDSMap::generate_test_instances(list<MDSMap*>& ls)
   m->data_pools.insert(0);
   m->metadata_pool = 1;
   m->cas_pool = 2;
-  m->compat = get_mdsmap_compat_set();
+  m->compat = get_mdsmap_compat_set_all();
 
   // these aren't the defaults, just in case anybody gets confused
   m->session_timeout = 61;
index 5c0dfb5ba4a5586aa70b546e3698c672a717c2b7..004a699068dad2c55344c19d359ed23965ad7cf1 100644 (file)
@@ -58,7 +58,8 @@ using namespace std;
 
 class CephContext;
 
-extern CompatSet get_mdsmap_compat_set();
+extern CompatSet get_mdsmap_compat_set_all();
+extern CompatSet get_mdsmap_compat_set_default();
 extern CompatSet get_mdsmap_compat_set_base(); // pre v0.20
 
 #define MDS_FEATURE_INCOMPAT_BASE CompatSet::Feature(1, "base v0.20")
index 15b4095b56603a0c29797c2a2262346b33f9e304..48ba79853f516991c17bd8f083cc3b9fe5fd5892 100644 (file)
@@ -68,7 +68,7 @@ void MDSMonitor::create_new_fs(MDSMap &m, int metadata_pool, int data_pool)
   m.data_pools.insert(data_pool);
   m.metadata_pool = metadata_pool;
   m.cas_pool = -1;
-  m.compat = get_mdsmap_compat_set();
+  m.compat = get_mdsmap_compat_set_default();
 
   m.session_timeout = g_conf->mds_session_timeout;
   m.session_autoclose = g_conf->mds_session_autoclose;