Lines Matching refs:bic

379 struct bfq_queue *bic_to_bfqq(struct bfq_io_cq *bic, bool is_sync,  in bic_to_bfqq()  argument
383 return bic->bfqq[1][actuator_idx]; in bic_to_bfqq()
385 return bic->bfqq[0][actuator_idx]; in bic_to_bfqq()
390 void bic_set_bfqq(struct bfq_io_cq *bic, in bic_set_bfqq() argument
395 struct bfq_queue *old_bfqq = bic->bfqq[is_sync][actuator_idx]; in bic_set_bfqq()
410 struct bfq_iocq_bfqq_data *bfqq_data = &bic->bfqq_data[actuator_idx]; in bic_set_bfqq()
413 if (old_bfqq && old_bfqq->bic == bic) in bic_set_bfqq()
414 old_bfqq->bic = NULL; in bic_set_bfqq()
417 bic->bfqq[1][actuator_idx] = bfqq; in bic_set_bfqq()
419 bic->bfqq[0][actuator_idx] = bfqq; in bic_set_bfqq()
436 struct bfq_data *bic_to_bfqd(struct bfq_io_cq *bic) in bic_to_bfqd() argument
438 return bic->icq.q->elevator->elevator_data; in bic_to_bfqd()
693 struct bfq_io_cq *bic = bfq_bic_lookup(data->q); in bfq_limit_depth() local
706 for (act_idx = 0; bic && act_idx < bfqd->num_actuators; act_idx++) { in bfq_limit_depth()
708 bic_to_bfqq(bic, op_is_sync(opf), act_idx); in bfq_limit_depth()
1134 struct bfq_io_cq *bic, bool bfq_already_existing) in bfq_bfqq_resume_state() argument
1139 struct bfq_iocq_bfqq_data *bfqq_data = &bic->bfqq_data[a_idx]; in bfq_bfqq_resume_state()
1837 bfqq->bic || RQ_BIC(rq)->bfqq_data[act_idx].stably_merged; in bfq_bfqq_handle_idle_busy_switch()
2457 struct bfq_io_cq *bic = bfq_bic_lookup(q); in bfq_bio_merge() local
2462 if (bic) { in bfq_bio_merge()
2467 bfq_bic_update_cgroup(bic, bio); in bfq_bio_merge()
2469 bfqd->bio_bfqq = bic_to_bfqq(bic, op_is_sync(bio->bi_opf), in bfq_bio_merge()
2474 bfqd->bio_bic = bic; in bfq_bio_merge()
2869 if (new_bfqq->bic) { in bfq_setup_stable_merge()
2872 &new_bfqq->bic->bfqq_data[new_a_idx]; in bfq_setup_stable_merge()
2907 void *io_struct, bool request, struct bfq_io_cq *bic) in bfq_setup_cooperator() argument
2911 struct bfq_iocq_bfqq_data *bfqq_data = &bic->bfqq_data[a_idx]; in bfq_setup_cooperator()
3042 struct bfq_io_cq *bic = bfqq->bic; in bfq_bfqq_save_state() local
3044 struct bfq_iocq_bfqq_data *bfqq_data = &bic->bfqq_data[a_idx]; in bfq_bfqq_save_state()
3051 if (!bic) in bfq_bfqq_save_state()
3133 struct bfq_io_cq *bic, in bfq_merge_bfqqs() argument
3203 bic_set_bfqq(bic, new_bfqq, true, bfqq->actuator_idx); in bfq_merge_bfqqs()
3215 new_bfqq->bic = NULL; in bfq_merge_bfqqs()
3226 bfqq->bic = NULL; in bfq_merge_bfqqs()
4904 if (bfqq->bic && bfqq->bic->bfqq[0][act_idx] && in bfq_select_queue()
4905 bfq_bfqq_busy(bfqq->bic->bfqq[0][act_idx]) && in bfq_select_queue()
4906 bfqq->bic->bfqq[0][act_idx]->next_rq) in bfq_select_queue()
4907 async_bfqq = bfqq->bic->bfqq[0][act_idx]; in bfq_select_queue()
4989 icq_to_bic(async_bfqq->next_rq->elv.icq) == bfqq->bic && in bfq_select_queue()
5375 if (bfqq->bic && bfqq->bfqd->burst_size > 0) in bfq_put_queue()
5453 static void bfq_exit_icq_bfqq(struct bfq_io_cq *bic, bool is_sync, in bfq_exit_icq_bfqq() argument
5456 struct bfq_queue *bfqq = bic_to_bfqq(bic, is_sync, actuator_idx); in bfq_exit_icq_bfqq()
5463 bic_set_bfqq(bic, NULL, is_sync, actuator_idx); in bfq_exit_icq_bfqq()
5468 static void _bfq_exit_icq(struct bfq_io_cq *bic, unsigned int num_actuators) in _bfq_exit_icq() argument
5470 struct bfq_iocq_bfqq_data *bfqq_data = bic->bfqq_data; in _bfq_exit_icq()
5477 bfq_exit_icq_bfqq(bic, true, act_idx); in _bfq_exit_icq()
5478 bfq_exit_icq_bfqq(bic, false, act_idx); in _bfq_exit_icq()
5484 struct bfq_io_cq *bic = icq_to_bic(icq); in bfq_exit_icq() local
5485 struct bfq_data *bfqd = bic_to_bfqd(bic); in bfq_exit_icq()
5499 _bfq_exit_icq(bic, bfqd->num_actuators); in bfq_exit_icq()
5502 _bfq_exit_icq(bic, BFQ_MAX_ACTUATORS); in bfq_exit_icq()
5511 bfq_set_next_ioprio_data(struct bfq_queue *bfqq, struct bfq_io_cq *bic) in bfq_set_next_ioprio_data() argument
5520 ioprio_class = IOPRIO_PRIO_CLASS(bic->ioprio); in bfq_set_next_ioprio_data()
5535 bfqq->new_ioprio = IOPRIO_PRIO_LEVEL(bic->ioprio); in bfq_set_next_ioprio_data()
5539 bfqq->new_ioprio = IOPRIO_PRIO_LEVEL(bic->ioprio); in bfq_set_next_ioprio_data()
5562 struct bfq_io_cq *bic,
5565 static void bfq_check_ioprio_change(struct bfq_io_cq *bic, struct bio *bio) in bfq_check_ioprio_change() argument
5567 struct bfq_data *bfqd = bic_to_bfqd(bic); in bfq_check_ioprio_change()
5569 int ioprio = bic->icq.ioc->ioprio; in bfq_check_ioprio_change()
5575 if (unlikely(!bfqd) || likely(bic->ioprio == ioprio)) in bfq_check_ioprio_change()
5578 bic->ioprio = ioprio; in bfq_check_ioprio_change()
5580 bfqq = bic_to_bfqq(bic, false, bfq_actuator_index(bfqd, bio)); in bfq_check_ioprio_change()
5584 bfqq = bfq_get_queue(bfqd, bio, false, bic, true); in bfq_check_ioprio_change()
5585 bic_set_bfqq(bic, bfqq, false, bfq_actuator_index(bfqd, bio)); in bfq_check_ioprio_change()
5589 bfqq = bic_to_bfqq(bic, true, bfq_actuator_index(bfqd, bio)); in bfq_check_ioprio_change()
5591 bfq_set_next_ioprio_data(bfqq, bic); in bfq_check_ioprio_change()
5595 struct bfq_io_cq *bic, pid_t pid, int is_sync, in bfq_init_bfqq() argument
5610 if (bic) in bfq_init_bfqq()
5611 bfq_set_next_ioprio_data(bfqq, bic); in bfq_init_bfqq()
5685 struct bfq_io_cq *bic, in bfq_do_early_stable_merge() argument
5695 if (new_bfqq->bic) in bfq_do_early_stable_merge()
5696 new_bfqq->bic->bfqq_data[a_idx].stably_merged = true; in bfq_do_early_stable_merge()
5697 bic->bfqq_data[a_idx].stably_merged = true; in bfq_do_early_stable_merge()
5705 bfqq->bic = bic; in bfq_do_early_stable_merge()
5706 return bfq_merge_bfqqs(bfqd, bic, bfqq); in bfq_do_early_stable_merge()
5757 struct bfq_io_cq *bic) in bfq_do_or_sched_stable_merge() argument
5808 bic, in bfq_do_or_sched_stable_merge()
5825 bic->bfqq_data[last_bfqq_created->actuator_idx].stable_merge_bfqq = in bfq_do_or_sched_stable_merge()
5836 struct bfq_io_cq *bic, in bfq_get_queue() argument
5839 const int ioprio = IOPRIO_PRIO_LEVEL(bic->ioprio); in bfq_get_queue()
5840 const int ioprio_class = IOPRIO_PRIO_CLASS(bic->ioprio); in bfq_get_queue()
5860 bfq_init_bfqq(bfqd, bfqq, bic, current->pid, in bfq_get_queue()
5891 bfqq = bfq_do_or_sched_stable_merge(bfqd, bfqq, bic); in bfq_get_queue()
5950 struct bfq_io_cq *bic) in bfq_update_has_short_ttime() argument
5973 if (atomic_read(&bic->icq.ioc->active_ref) == 0 || in bfq_update_has_short_ttime()
6723 bfq_split_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq) in bfq_split_bfqq() argument
6734 bic_set_bfqq(bic, NULL, true, bfqq->actuator_idx); in bfq_split_bfqq()
6741 __bfq_get_bfqq_handle_split(struct bfq_data *bfqd, struct bfq_io_cq *bic, in __bfq_get_bfqq_handle_split() argument
6746 struct bfq_queue *bfqq = bic_to_bfqq(bic, is_sync, act_idx); in __bfq_get_bfqq_handle_split()
6747 struct bfq_iocq_bfqq_data *bfqq_data = &bic->bfqq_data[act_idx]; in __bfq_get_bfqq_handle_split()
6757 bfqq = bfq_get_queue(bfqd, bio, is_sync, bic, split); in __bfq_get_bfqq_handle_split()
6759 bic_set_bfqq(bic, bfqq, is_sync, act_idx); in __bfq_get_bfqq_handle_split()
6848 struct bfq_io_cq *bic, in bfq_get_bfqq_handle_split() argument
6857 bfqq = __bfq_get_bfqq_handle_split(bfqd, bic, bio, false, is_sync, in bfq_get_bfqq_handle_split()
6864 bic->bfqq_data[idx].stably_merged) in bfq_get_bfqq_handle_split()
6871 bic->bfqq_data[idx].saved_in_large_burst = true; in bfq_get_bfqq_handle_split()
6873 bfqq = bfq_split_bfqq(bic, bfqq); in bfq_get_bfqq_handle_split()
6875 bfq_bfqq_resume_state(bfqq, bfqd, bic, true); in bfq_get_bfqq_handle_split()
6879 bfqq = __bfq_get_bfqq_handle_split(bfqd, bic, bio, true, is_sync, NULL); in bfq_get_bfqq_handle_split()
6883 bfq_bfqq_resume_state(bfqq, bfqd, bic, false); in bfq_get_bfqq_handle_split()
6928 struct bfq_io_cq *bic; in bfq_init_rq() local
6946 bic = icq_to_bic(rq->elv.icq); in bfq_init_rq()
6947 bfq_check_ioprio_change(bic, bio); in bfq_init_rq()
6948 bfq_bic_update_cgroup(bic, bio); in bfq_init_rq()
6949 bfqq = bfq_get_bfqq_handle_split(bfqd, bic, bio, a_idx, is_sync); in bfq_init_rq()
6953 bic->requests++; in bfq_init_rq()
6957 rq->elv.priv[0] = bic; in bfq_init_rq()
6968 bfqq->bic = bic; in bfq_init_rq()