From: Li Wang Date: Tue, 14 Jan 2014 06:51:31 +0000 (+0800) Subject: mds: Shutdown old mds when inline enable X-Git-Tag: v0.78~234^2^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ddbaa5c22f37735a2c2f1d72d683551e8655dc68;p=ceph.git mds: Shutdown old mds when inline enable Signed-off-by: Yunchuan Wen Signed-off-by: Li Wang --- diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index c9df062eb776..b8ae455a60d0 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -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)) { diff --git a/src/mds/MDSMap.cc b/src/mds/MDSMap.cc index 15c2f3291f6f..c641358c4a2d 100644 --- a/src/mds/MDSMap.cc +++ b/src/mds/MDSMap.cc @@ -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& 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; diff --git a/src/mds/MDSMap.h b/src/mds/MDSMap.h index 5c0dfb5ba4a5..004a699068da 100644 --- a/src/mds/MDSMap.h +++ b/src/mds/MDSMap.h @@ -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") diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index 15b4095b5660..48ba79853f51 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -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;