| 63 | std::set<std::pair<unsigned,T>> preempt_by_prio; ///< in_progress that can be preempted |
| 64 | |
| 65 | void preempt_one() { |
| 66 | ceph_assert(!preempt_by_prio.empty()); |
| 67 | auto q = in_progress.find(preempt_by_prio.begin()->second); |
| 68 | ceph_assert(q != in_progress.end()); |
| 69 | Reservation victim = q->second; |
| 70 | rdout(10) << __func__ << " preempt " << victim << dendl; |
| 71 | f->queue(victim.preempt); |
| 72 | victim.preempt = nullptr; |
| 73 | in_progress.erase(q); |
| 74 | preempt_by_prio.erase(preempt_by_prio.begin()); |
| 75 | } |
| 76 | |
| 77 | void do_queues() { |
| 78 | rdout(20) << __func__ << ":\n"; |