{
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();