]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ebofs: fix lock recursion
authorSage Weil <sage@newdream.net>
Fri, 7 Nov 2008 03:15:10 +0000 (19:15 -0800)
committerSage Weil <sage@newdream.net>
Fri, 7 Nov 2008 03:15:10 +0000 (19:15 -0800)
src/ebofs/Ebofs.cc
src/ebofs/Ebofs.h

index c39a129dd9c89aefa922096e58cc4777492c5f15..09932999623f4f883538f8f9832cf38bab4946de 100644 (file)
@@ -3658,9 +3658,17 @@ int Ebofs::collection_remove(coll_t cid, pobject_t oid, Context *onsafe)
   return 0;
 }
 
+
 int Ebofs::collection_list(coll_t cid, vector<pobject_t>& ls)
 {
   ebofs_lock.Lock();
+  int num = _collection_list(cid, ls);
+  ebofs_lock.Unlock();
+  return num;
+}
+
+int Ebofs::_collection_list(coll_t cid, vector<pobject_t>& ls)
+{
   dout(9) << "collection_list " << hex << cid << dec << dendl;
 
   if (!_collection_exists(cid)) {
@@ -3683,7 +3691,6 @@ int Ebofs::collection_list(coll_t cid, vector<pobject_t>& ls)
     }
   }
 
-  ebofs_lock.Unlock();
   return num;
 }
 
index ee14f13868ae29c27abd7c87e830d86e4cbee017..789d264fcbc174ba8ebed75cdd41cdb1e989ae02 100644 (file)
@@ -344,6 +344,7 @@ private:
   int _setattrs(pobject_t oid, map<string,bufferptr>& attrset);
   int _rmattr(pobject_t oid, const char *name);
   bool _collection_exists(coll_t c);
+  int _collection_list(coll_t c, vector<pobject_t>& o);
   int _create_collection(coll_t c);
   int _destroy_collection(coll_t c);
   int _collection_add(coll_t c, pobject_t o);