]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix deadlock on map_lock vs peer_stat_lock
authorSage Weil <sage@newdream.net>
Mon, 17 Nov 2008 17:13:08 +0000 (09:13 -0800)
committerSage Weil <sage@newdream.net>
Mon, 17 Nov 2008 17:13:08 +0000 (09:13 -0800)
src/osd/OSD.cc

index 9f4ff4493c6eff9d2263d4f2dded9eda1fa30541..fa90052cb3dee5fcf2575024bd97c3fbcf74051c 100644 (file)
@@ -948,6 +948,9 @@ void OSD::heartbeat()
     in.close();
   }
 
+  // read lock osdmap
+  map_lock.get_read();
+
   // calc my stats
   Mutex::Locker lock(peer_stat_lock);
   _refresh_my_stat(now);
@@ -957,7 +960,6 @@ void OSD::heartbeat()
 
   //load_calc.set_size(stat_ops);
   
-  map_lock.get_read();
 
   // send heartbeats
   for (set<int>::iterator i = heartbeat_to.begin();