]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
OSD: do not lock osd during dequeue_op
authorSamuel Just <sam.just@inktank.com>
Mon, 7 May 2012 20:00:41 +0000 (13:00 -0700)
committerSamuel Just <sam.just@inktank.com>
Thu, 5 Jul 2012 17:14:59 +0000 (10:14 -0700)
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/OSD.cc

index b509b6e6d85a930fe081b60127891e91f180f854..4d465b35a30fd6632a5a0bd8ba21c7ca60622c07 100644 (file)
@@ -5397,24 +5397,12 @@ void OSD::dequeue_op(PG *pg)
 {
   OpRequestRef op;
 
-  osd_lock.Lock();
-  {
-    // lock pg and get pending op
-    pg->lock();
-
-    assert(!pg->op_queue.empty());
-    op = pg->op_queue.front();
-    pg->op_queue.pop_front();
+  pg->lock();
+  assert(!pg->op_queue.empty());
+  op = pg->op_queue.front();
+  pg->op_queue.pop_front();
     
-    dout(10) << "dequeue_op " << *op->request << " pg " << *pg << dendl;
-
-    // share map?
-    //  do this preemptively while we hold osd_lock and pg->lock
-    //  to avoid lock ordering issues later.
-    for (unsigned i=1; i<pg->acting.size(); i++) 
-      _share_map_outgoing( osdmap->get_cluster_inst(pg->acting[i]) );
-  }
-  osd_lock.Unlock();
+  dout(10) << "dequeue_op " << *op->request << " pg " << *pg << dendl;
 
   op->mark_reached_pg();