]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix leak of osd_lock on pg lookup vs pool deletion race
authorSage Weil <sage.weil@dreamhost.com>
Sat, 10 Sep 2011 22:51:27 +0000 (15:51 -0700)
committerSage Weil <sage.weil@dreamhost.com>
Sat, 10 Sep 2011 22:51:27 +0000 (15:51 -0700)
Fixes: #1520
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
src/osd/OSD.cc

index 87eda3fb256620075260096eaadeb594f2778a46..55287a468d6bf91ead7c487a2482fbb6bf3f8fce 100644 (file)
@@ -1132,14 +1132,13 @@ PG *OSD::_lookup_lock_pg(pg_t pgid)
 
 PG *OSD::lookup_lock_raw_pg(pg_t pgid)
 {
-  osd_lock.Lock();
+  Mutex::Locker l(osd_lock);
   if (osdmap->have_pg_pool(pgid.pool())) {
     pgid = osdmap->raw_pg_to_pg(pgid);
   } else if (!_have_pg(pgid)) {
     return NULL;
   }
   PG *pg = _lookup_lock_pg(pgid);
-  osd_lock.Unlock();
   return pg;
 }