From: Greg Farnum Date: Thu, 10 Mar 2016 08:56:37 +0000 (-0800) Subject: Merge remote-tracking branch 'origin/jewel' X-Git-Tag: v10.1.0~174 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c49de8c1c2096896f76138ad8f2b12cfc1e0c0bf;p=ceph.git Merge remote-tracking branch 'origin/jewel' Conflicts: src/client/Client.h Signed-off-by: Greg Farnum --- c49de8c1c2096896f76138ad8f2b12cfc1e0c0bf diff --cc src/client/Client.cc index 6e012ba27e84,4b1568a968a7..c92fe9767c92 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@@ -5485,14 -5488,13 +5488,20 @@@ void Client::unmount( ldout(cct, 0) << " destroyed lost open file " << fh << " on " << *fh->inode << dendl; _release_fh(fh); } + + while (!ll_unclosed_fh_set.empty()) { + set::iterator it = ll_unclosed_fh_set.begin(); + ll_unclosed_fh_set.erase(*it); + ldout(cct, 0) << " destroyed lost open file " << *it << " on " << *((*it)->inode) << dendl; + _release_fh(*it); + } + while (!opened_dirs.empty()) { + dir_result_t *dirp = *opened_dirs.begin(); + ldout(cct, 0) << " destroyed lost open dir " << dirp << " on " << *dirp->inode << dendl; + _closedir(dirp); + } + _ll_drop_pins(); while (unsafe_sync_write > 0) { diff --cc src/client/Client.h index c6ba74694f4d,40a97af88843..d7a6ea0a5b8c --- a/src/client/Client.h +++ b/src/client/Client.h @@@ -421,7 -422,8 +422,8 @@@ protected // file handles, etc. interval_set free_fd_set; // unused fds ceph::unordered_map fd_map; - + set ll_unclosed_fh_set; + ceph::unordered_set opened_dirs; int get_fd() { int fd = free_fd_set.range_start();