From: Sage Weil Date: Tue, 4 Aug 2009 21:10:33 +0000 (-0700) Subject: mds: set up root inode properly on replay X-Git-Tag: v0.12~12 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2eb73630c9614e2aaaa031f1eb3251d191214579;p=ceph.git mds: set up root inode properly on replay --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index f9a9adae83b7..a0b8ab768ec5 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -2631,6 +2631,9 @@ void MDCache::recalc_auth_bits() { dout(7) << "recalc_auth_bits" << dendl; + if (mds->whoami != mds->mdsmap->get_root()) + root->state_clear(CInode::STATE_AUTH); + set subtree_inodes; for (map >::iterator p = subtrees.begin(); p != subtrees.end(); diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index 9c87808aef82..05e82bd7278b 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -886,9 +886,15 @@ void MDS::boot_start(int step, int r) break; case 2: - dout(2) << "boot_start " << step << ": loading/discovering root inode" << dendl; - mdcache->open_root_inode(new C_MDS_BootStart(this, 3)); - break; + if (is_starting()) { + dout(2) << "boot_start " << step << ": loading/discovering root inode" << dendl; + mdcache->open_root_inode(new C_MDS_BootStart(this, 3)); + break; + } else { + // replay. make up fake root inode to start with + mdcache->create_root_inode(); + step = 3; + } case 3: if (is_replay() || is_standby_replay()) {