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
committerGreg Farnum <greg@inktank.com>2013-10-16 16:08:09 -0700
commit299ddd31b29e332dc5e76bc4f871e4769698665d (patch)
treebb45c21de07296b05197faed0218cebd8003191f /src/mds/MDCache.h
parent7d99940467019bda74da83f3f1ebc2da46bd6967 (diff)
downloadceph-dumpling.tar.gz
mds: fix infinite loop of MDCache::populate_mydir().dumpling
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> Reviewed-by: Greg Farnum <greg@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 007f06ec174d4ee5cfb578c8b3f1c96b2bb0c238) Conflicts: src/mds/MDCache.h Reviewed-by: Greg Farnum <greg@inktank.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 36a322c6324..2574e755c9b 100644
--- a/src/mds/MDCache.h
+++ b/src/mds/MDCache.h
@@ -858,7 +858,6 @@ public:
// -- stray --
public:
- void scan_stray_dir();
void eval_stray(CDentry *dn);
void eval_remote(CDentry *dn);
@@ -872,6 +871,7 @@ public:
eval_stray(dn);
}
protected:
+ void scan_stray_dir(dirfrag_t next=dirfrag_t());
void fetch_backtrace(inodeno_t ino, int64_t pool, bufferlist& bl, Context *fin);
void remove_backtrace(inodeno_t ino, int64_t pool, Context *fin);
void _purge_forwarding_pointers(bufferlist& bl, CDentry *dn, int r);
@@ -880,6 +880,7 @@ protected:
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_PurgeForwardingPointers;
friend class C_MDC_PurgeStray;