]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
[ceph-fuse] Fh ref might leak at umounting 7686/head
authorZhi Zhang <willzzhang@tencent.com>
Thu, 18 Feb 2016 10:45:50 +0000 (18:45 +0800)
committerZhi Zhang <willzzhang@tencent.com>
Thu, 18 Feb 2016 10:45:50 +0000 (18:45 +0800)
Signed-off-by: Zhi Zhang <zhangz.david@outlook.com>
src/client/Client.cc
src/client/Client.h

index 294bbcd15e66e2803aead1fd611628f710a7e3f5..26c0764d9022e1e926ae1f8acb4f26379f5a4530 100644 (file)
@@ -5491,9 +5491,9 @@ void Client::unmount()
     _release_fh(fh);
   }
   
-  while (!ll_unclosed_fh.empty()) {
-    set<Fh*>::iterator it = ll_unclosed_fh.begin();
-    ll_unclosed_fh.erase(*it);
+  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);
   }
@@ -11044,7 +11044,7 @@ int Client::ll_open(Inode *in, int flags, Fh **fhp, int uid, int gid)
  out:
   Fh *fhptr = fhp ? *fhp : NULL;
   if (fhptr) {
-    ll_unclosed_fh.insert(fhptr);
+    ll_unclosed_fh_set.insert(fhptr);
   }
   tout(cct) << (unsigned long)fhptr << std::endl;
   ldout(cct, 3) << "ll_open " << vino << " " << flags << " = " << r << " (" <<
@@ -11118,7 +11118,7 @@ out:
 
   Fh *fhptr = fhp ? *fhp : NULL;
   if (fhptr) {
-    ll_unclosed_fh.insert(fhptr);
+    ll_unclosed_fh_set.insert(fhptr);
   }
   tout(cct) << (unsigned long)fhptr << std::endl;
   tout(cct) << attr->st_ino << std::endl;
@@ -11515,8 +11515,8 @@ int Client::ll_release(Fh *fh)
   tout(cct) << "ll_release (fh)" << std::endl;
   tout(cct) << (unsigned long)fh << std::endl;
 
-  if (ll_unclosed_fh.count(fh))
-    ll_unclosed_fh.erase(fh);
+  if (ll_unclosed_fh_set.count(fh))
+    ll_unclosed_fh_set.erase(fh);
   return _release_fh(fh);
 }
 
index 18e7b3e1699f0a9517f320e719b19fbc321c4a63..e59db87e6726beab5022a2c3d1a26d14191c885a 100644 (file)
@@ -421,7 +421,7 @@ protected:
   // file handles, etc.
   interval_set<int> free_fd_set;  // unused fds
   ceph::unordered_map<int, Fh*> fd_map;
-  set<Fh*> ll_unclosed_fh;
+  set<Fh*> ll_unclosed_fh_set;
   
   int get_fd() {
     int fd = free_fd_set.range_start();