From: "Yan, Zheng" <zheng.z.yan@xxxxxxxxx> commit 1174dd3188 (don't retry readdir request after issuing caps) introduced an bug that wrongly marks 'end' in the the readdir reply. The code that touches existing dentries re-uses an iterator, and the iterator is used for checking if readdir is end. Signed-off-by: Yan, Zheng <zheng.z.yan@xxxxxxxxx> --- src/mds/Server.cc | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index eb0682e..328d025 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -2895,11 +2895,9 @@ void Server::handle_client_readdir(MDRequest *mdr) continue; } else { // touch everything i _do_ have - for (it = dir->begin(); - it != dir->end(); - it++) - if (!it->second->get_linkage()->is_null()) - mdcache->lru.lru_touch(it->second); + for (CDir::map_t::iterator p = dir->begin(); p != dir->end(); p++) + if (!p->second->get_linkage()->is_null()) + mdcache->lru.lru_touch(p->second); // already issued caps and leases, reply immediately. if (dnbl.length() > 0) { -- 1.7.11.7 -- 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