Message ID | 1348486029-1125-2-git-send-email-zheng.z.yan@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, 24 Sep 2012, Yan, Zheng wrote: > From: "Yan, Zheng" <zheng.z.yan@intel.com> > > When starting a MDS that was stopped cleanly, we need manually > adjust mydir's auth. This is because MDS log is empty in this case, > mydir's auth can not be adjusted during log replay. > > Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com> > --- > Changelog v1 -> v2: > - call mdlog->start_new_segment() after adjusting mydir's auth. > --- > src/mds/MDCache.cc | 7 +++++++ > src/mds/MDCache.h | 1 + > src/mds/MDS.cc | 5 +++-- > 3 files changed, 11 insertions(+), 2 deletions(-) > > diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc > index da3affb..1a0e399 100644 > --- a/src/mds/MDCache.cc > +++ b/src/mds/MDCache.cc > @@ -531,6 +531,13 @@ void MDCache::open_mydir_inode(Context *c) > in->fetch(c); > } > > +void MDCache::adjust_mydir_auth() > +{ > + CDir *mydir = myin->get_or_open_dirfrag(this, frag_t()); > + assert(mydir); > + adjust_subtree_auth(mydir, mds->whoami); > +} > + I think it would be simpler to just roll this into open_root(), right after CDir *mydir = myin->get_or_open_dirfrag(this, frag_t()); assert(mydir); It makes sense to me to get the auth right when it is populated in teh cache. Also, it looks liek that's what we're doing for the root directory a few lines up. Thanks! sage > void MDCache::open_root() > { > dout(10) << "open_root" << dendl; > diff --git a/src/mds/MDCache.h b/src/mds/MDCache.h > index 12bdb03..fffb083 100644 > --- a/src/mds/MDCache.h > +++ b/src/mds/MDCache.h > @@ -643,6 +643,7 @@ public: > void open_root_inode(Context *c); > void open_root(); > void open_mydir_inode(Context *c); > + void adjust_mydir_auth(); > void populate_mydir(); > > void _create_system_file(CDir *dir, const char *name, CInode *in, Context *fin); > diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc > index d0aac30..ed95832 100644 > --- a/src/mds/MDS.cc > +++ b/src/mds/MDS.cc > @@ -1229,10 +1229,11 @@ void MDS::starting_done() > assert(is_starting()); > request_state(MDSMap::STATE_ACTIVE); > > + mdcache->adjust_mydir_auth(); > + mdcache->open_root(); > + > // start new segment > mdlog->start_new_segment(0); > - > - mdcache->open_root(); > } > > > -- > 1.7.11.4 > > -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index da3affb..1a0e399 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -531,6 +531,13 @@ void MDCache::open_mydir_inode(Context *c) in->fetch(c); } +void MDCache::adjust_mydir_auth() +{ + CDir *mydir = myin->get_or_open_dirfrag(this, frag_t()); + assert(mydir); + adjust_subtree_auth(mydir, mds->whoami); +} + void MDCache::open_root() { dout(10) << "open_root" << dendl; diff --git a/src/mds/MDCache.h b/src/mds/MDCache.h index 12bdb03..fffb083 100644 --- a/src/mds/MDCache.h +++ b/src/mds/MDCache.h @@ -643,6 +643,7 @@ public: void open_root_inode(Context *c); void open_root(); void open_mydir_inode(Context *c); + void adjust_mydir_auth(); void populate_mydir(); void _create_system_file(CDir *dir, const char *name, CInode *in, Context *fin); diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index d0aac30..ed95832 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -1229,10 +1229,11 @@ void MDS::starting_done() assert(is_starting()); request_state(MDSMap::STATE_ACTIVE); + mdcache->adjust_mydir_auth(); + mdcache->open_root(); + // start new segment mdlog->start_new_segment(0); - - mdcache->open_root(); }