Lines Matching defs:new_bfqq

2496 bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
2502 * If there are no process references on the new_bfqq, then it is
2503 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
2507 if (!bfqq_process_refs(new_bfqq))
2511 while ((__bfqq = new_bfqq->new_bfqq)) {
2514 new_bfqq = __bfqq;
2518 new_process_refs = bfqq_process_refs(new_bfqq);
2531 if (new_bfqq->entity.parent != bfqq->entity.parent)
2535 new_bfqq->pid);
2544 * We redirect bfqq to new_bfqq and not the opposite, because
2548 * process to new_bfqq. In contrast, the io_cq of new_bfqq is
2549 * not available any more (new_bfqq->bic == NULL).
2551 * Anyway, even in case new_bfqq coincides with the in-service
2557 bfqq->new_bfqq = new_bfqq;
2562 * associated with new_bfqq. Here we increases new_bfqq->ref
2564 * expected to be associated with new_bfqq as they happen to
2567 new_bfqq->ref += process_refs;
2568 return new_bfqq;
2572 struct bfq_queue *new_bfqq)
2574 if (bfq_too_late_for_merging(new_bfqq))
2577 if (bfq_class_idle(bfqq) || bfq_class_idle(new_bfqq) ||
2578 (bfqq->ioprio_class != new_bfqq->ioprio_class))
2586 if (BFQQ_SEEKY(bfqq) || BFQQ_SEEKY(new_bfqq))
2594 if (!bfq_bfqq_sync(bfqq) || !bfq_bfqq_sync(new_bfqq))
2624 struct bfq_queue *in_service_bfqq, *new_bfqq;
2627 if (bfqq->new_bfqq)
2628 return bfqq->new_bfqq;
2699 new_bfqq = bfq_setup_merge(bfqq, in_service_bfqq);
2700 if (new_bfqq)
2701 return new_bfqq;
2708 new_bfqq = bfq_find_close_cooperator(bfqd, bfqq,
2711 if (new_bfqq && likely(new_bfqq != &bfqd->oom_bfqq) &&
2712 bfq_may_be_close_cooperator(bfqq, new_bfqq))
2713 return bfq_setup_merge(bfqq, new_bfqq);
2783 struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
2786 (unsigned long)new_bfqq->pid);
2789 bfq_bfqq_save_state(new_bfqq);
2791 bfq_mark_bfqq_IO_bound(new_bfqq);
2795 * If bfqq is weight-raised, then let new_bfqq inherit
2803 if (new_bfqq->wr_coeff == 1 && bfqq->wr_coeff > 1) {
2804 new_bfqq->wr_coeff = bfqq->wr_coeff;
2805 new_bfqq->wr_cur_max_time = bfqq->wr_cur_max_time;
2806 new_bfqq->last_wr_start_finish = bfqq->last_wr_start_finish;
2807 new_bfqq->wr_start_at_switch_to_srt =
2809 if (bfq_bfqq_busy(new_bfqq))
2811 new_bfqq->entity.prio_changed = 1;
2814 if (bfqq->wr_coeff > 1) { /* bfqq has given its wr to new_bfqq */
2821 bfq_log_bfqq(bfqd, new_bfqq, "merge_bfqqs: wr_busy %d",
2825 * Merge queues (that is, let bic redirect its requests to new_bfqq)
2827 bic_set_bfqq(bic, new_bfqq, true);
2828 bfq_mark_bfqq_coop(new_bfqq);
2830 * new_bfqq now belongs to at least two bics (it is a shared queue):
2831 * set new_bfqq->bic to NULL. bfqq either:
2839 new_bfqq->bic = NULL;
2849 new_bfqq->pid = -1;
2859 struct bfq_queue *bfqq = bfqd->bio_bfqq, *new_bfqq;
2878 new_bfqq = bfq_setup_cooperator(bfqd, bfqq, bio, false);
2879 if (new_bfqq) {
2883 * merge between bfqq and new_bfqq can be safely
2884 * fulfilled, i.e., bic can be redirected to new_bfqq
2888 new_bfqq);
2891 * so use new_bfqq to decide whether bio and rq can be
2894 bfqq = new_bfqq;
2898 * bfqd->bio_bic now points to new_bfqq, and
4958 __bfqq = bfqq->new_bfqq;
4962 next = __bfqq->new_bfqq;
5447 *new_bfqq = bfq_setup_cooperator(bfqd, bfqq, rq, true);
5450 if (new_bfqq) {
5455 new_bfqq->allocated++;
5457 new_bfqq->ref++;
5462 * to new_bfqq or even some other bfq_queue),
5464 * new_bfqq.
5468 bfqq, new_bfqq);
5472 * rq is about to be enqueued into new_bfqq,
5476 rq->elv.priv[1] = new_bfqq;
5477 bfqq = new_bfqq;