summaryrefslogtreecommitdiff
path: root/src/mds/MDCache.h
diff options
context:
space:
mode:
authorYan, Zheng <zheng.z.yan@intel.com>2013-10-10 10:35:48 +0800
committerYan, Zheng <zheng.z.yan@intel.com>2013-10-10 10:53:24 +0800
commit007f06ec174d4ee5cfb578c8b3f1c96b2bb0c238 (patch)
treea2bb01e6611f28553ca53ee532fdc3d33c611808 /src/mds/MDCache.h
parent8e493ef23b1a70e19aaee63f656706d2aa004068 (diff)
downloadceph-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.h3
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;