ldout(cct, 0) << " destroyed lost open file " << fh << " on " << *fh->inode << dendl;
_release_fh(fh);
}
+
+ while (!ll_unclosed_fh_set.empty()) {
+ set<Fh*>::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) {
// file handles, etc.
interval_set<int> free_fd_set; // unused fds
ceph::unordered_map<int, Fh*> fd_map;
-
+ set<Fh*> ll_unclosed_fh_set;
+ ceph::unordered_set<dir_result_t*> opened_dirs;
int get_fd() {
int fd = free_fd_set.range_start();