[PATCH 2/2] mds: Adjust mydir auth when starting MDS that was stopped cleanly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: "Yan, Zheng" <zheng.z.yan@xxxxxxxxx>

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@xxxxxxxxx>
---
 src/mds/MDCache.cc | 7 +++++++
 src/mds/MDCache.h  | 1 +
 src/mds/MDS.cc     | 1 +
 3 files changed, 9 insertions(+)

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..d369229 100644
--- a/src/mds/MDS.cc
+++ b/src/mds/MDS.cc
@@ -1232,6 +1232,7 @@ void MDS::starting_done()
   // start new segment
   mdlog->start_new_segment(0);
 
+  mdcache->adjust_mydir_auth();
   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@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux