diff options
author | Yan, Zheng <zheng.z.yan@intel.com> | 2013-10-10 10:35:48 +0800 |
---|---|---|
committer | Yan, Zheng <zheng.z.yan@intel.com> | 2013-10-10 10:53:24 +0800 |
commit | 007f06ec174d4ee5cfb578c8b3f1c96b2bb0c238 (patch) | |
tree | a2bb01e6611f28553ca53ee532fdc3d33c611808 /src/mds/MDCache.h | |
parent | 8e493ef23b1a70e19aaee63f656706d2aa004068 (diff) | |
download | ceph-wip-4405.tar.gz |
mds: fix infinite loop of MDCache::populate_mydir().wip-4405
make MDCache::populate_mydir() only fetch bare-bone stray dirs.
After all stray dirs are populated, call MDCache::scan_stray_dir(),
it fetches incomplete stray dirs.
Fixes: #4405
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Diffstat (limited to 'src/mds/MDCache.h')
-rw-r--r-- | src/mds/MDCache.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/mds/MDCache.h b/src/mds/MDCache.h index d8f2a9486fb..416c6454292 100644 --- a/src/mds/MDCache.h +++ b/src/mds/MDCache.h @@ -870,7 +870,6 @@ public: public: elist<CDentry*> delayed_eval_stray; - void scan_stray_dir(); void eval_stray(CDentry *dn, bool delay=false); void eval_remote(CDentry *dn); @@ -884,11 +883,13 @@ public: eval_stray(dn, delay); } protected: + void scan_stray_dir(dirfrag_t next=dirfrag_t()); void fetch_backtrace(inodeno_t ino, int64_t pool, bufferlist& bl, Context *fin); void purge_stray(CDentry *dn); void _purge_stray_purged(CDentry *dn, int r=0); void _purge_stray_logged(CDentry *dn, version_t pdv, LogSegment *ls); void _purge_stray_logged_truncate(CDentry *dn, LogSegment *ls); + friend class C_MDC_RetryScanStray; friend class C_MDC_FetchedBacktrace; friend class C_MDC_PurgeStrayLogged; friend class C_MDC_PurgeStrayLoggedTruncate; |