diff options
author | Yan, Zheng <zheng.z.yan@intel.com> | 2013-10-10 10:35:48 +0800 |
---|---|---|
committer | Greg Farnum <greg@inktank.com> | 2013-10-16 16:08:09 -0700 |
commit | 299ddd31b29e332dc5e76bc4f871e4769698665d (patch) | |
tree | bb45c21de07296b05197faed0218cebd8003191f /src/mds/MDCache.h | |
parent | 7d99940467019bda74da83f3f1ebc2da46bd6967 (diff) | |
download | ceph-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.h | 3 |
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; |