Lines Matching refs:bic
369 struct bfq_queue *bic_to_bfqq(struct bfq_io_cq *bic, bool is_sync) in bic_to_bfqq() argument
371 return bic->bfqq[is_sync]; in bic_to_bfqq()
374 void bic_set_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq, bool is_sync) in bic_set_bfqq() argument
376 struct bfq_queue *old_bfqq = bic->bfqq[is_sync]; in bic_set_bfqq()
379 if (old_bfqq && old_bfqq->bic == bic) in bic_set_bfqq()
380 old_bfqq->bic = NULL; in bic_set_bfqq()
382 bic->bfqq[is_sync] = bfqq; in bic_set_bfqq()
385 struct bfq_data *bic_to_bfqd(struct bfq_io_cq *bic) in bic_to_bfqd() argument
387 return bic->icq.q->elevator->elevator_data; in bic_to_bfqd()
1020 struct bfq_io_cq *bic, bool bfq_already_existing) in bfq_bfqq_resume_state() argument
1025 if (bic->saved_has_short_ttime) in bfq_bfqq_resume_state()
1030 if (bic->saved_IO_bound) in bfq_bfqq_resume_state()
1035 bfqq->entity.new_weight = bic->saved_weight; in bfq_bfqq_resume_state()
1036 bfqq->ttime = bic->saved_ttime; in bfq_bfqq_resume_state()
1037 bfqq->wr_coeff = bic->saved_wr_coeff; in bfq_bfqq_resume_state()
1038 bfqq->wr_start_at_switch_to_srt = bic->saved_wr_start_at_switch_to_srt; in bfq_bfqq_resume_state()
1039 bfqq->last_wr_start_finish = bic->saved_last_wr_start_finish; in bfq_bfqq_resume_state()
1040 bfqq->wr_cur_max_time = bic->saved_wr_cur_max_time; in bfq_bfqq_resume_state()
1694 bfqq->bic && (*interactive || soft_rt))); in bfq_bfqq_handle_idle_busy_switch()
2233 struct bfq_io_cq *bic = bfq_bic_lookup(bfqd, current->io_context, q); in bfq_bio_merge() local
2238 if (bic) { in bfq_bio_merge()
2243 bfq_bic_update_cgroup(bic, bio); in bfq_bio_merge()
2245 bfqd->bio_bfqq = bic_to_bfqq(bic, op_is_sync(bio->bi_opf)); in bfq_bio_merge()
2249 bfqd->bio_bic = bic; in bfq_bio_merge()
2712 struct bfq_io_cq *bic = bfqq->bic; in bfq_bfqq_save_state() local
2719 if (!bic) in bfq_bfqq_save_state()
2722 bic->saved_weight = bfqq->entity.orig_weight; in bfq_bfqq_save_state()
2723 bic->saved_ttime = bfqq->ttime; in bfq_bfqq_save_state()
2724 bic->saved_has_short_ttime = bfq_bfqq_has_short_ttime(bfqq); in bfq_bfqq_save_state()
2725 bic->saved_IO_bound = bfq_bfqq_IO_bound(bfqq); in bfq_bfqq_save_state()
2726 bic->saved_in_large_burst = bfq_bfqq_in_large_burst(bfqq); in bfq_bfqq_save_state()
2727 bic->was_in_burst_list = !hlist_unhashed(&bfqq->burst_list_node); in bfq_bfqq_save_state()
2740 bic->saved_wr_coeff = bfqq->bfqd->bfq_wr_coeff; in bfq_bfqq_save_state()
2741 bic->saved_wr_start_at_switch_to_srt = bfq_smallest_from_now(); in bfq_bfqq_save_state()
2742 bic->saved_wr_cur_max_time = bfq_wr_duration(bfqq->bfqd); in bfq_bfqq_save_state()
2743 bic->saved_last_wr_start_finish = jiffies; in bfq_bfqq_save_state()
2745 bic->saved_wr_coeff = bfqq->wr_coeff; in bfq_bfqq_save_state()
2746 bic->saved_wr_start_at_switch_to_srt = in bfq_bfqq_save_state()
2748 bic->saved_last_wr_start_finish = bfqq->last_wr_start_finish; in bfq_bfqq_save_state()
2749 bic->saved_wr_cur_max_time = bfqq->wr_cur_max_time; in bfq_bfqq_save_state()
2774 bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic, in bfq_merge_bfqqs() argument
2819 bic_set_bfqq(bic, new_bfqq, true); in bfq_merge_bfqqs()
2831 new_bfqq->bic = NULL; in bfq_merge_bfqqs()
2842 bfqq->bic = NULL; in bfq_merge_bfqqs()
4452 bfqq->bic && bfqq->bic->bfqq[0] && in bfq_select_queue()
4453 bfq_bfqq_busy(bfqq->bic->bfqq[0]) && in bfq_select_queue()
4454 bfqq->bic->bfqq[0]->next_rq ? in bfq_select_queue()
4455 bfqq->bic->bfqq[0] : NULL; in bfq_select_queue()
4530 icq_to_bic(async_bfqq->next_rq->elv.icq) == bfqq->bic && in bfq_select_queue()
4533 bfqq = bfqq->bic->bfqq[0]; in bfq_select_queue()
4900 if (bfqq->bic && bfqq->bfqd->burst_size > 0) in bfq_put_queue()
4971 static void bfq_exit_icq_bfqq(struct bfq_io_cq *bic, bool is_sync) in bfq_exit_icq_bfqq() argument
4973 struct bfq_queue *bfqq = bic_to_bfqq(bic, is_sync); in bfq_exit_icq_bfqq()
4983 bic_set_bfqq(bic, NULL, is_sync); in bfq_exit_icq_bfqq()
4991 struct bfq_io_cq *bic = icq_to_bic(icq); in bfq_exit_icq() local
4993 bfq_exit_icq_bfqq(bic, true); in bfq_exit_icq()
4994 bfq_exit_icq_bfqq(bic, false); in bfq_exit_icq()
5002 bfq_set_next_ioprio_data(struct bfq_queue *bfqq, struct bfq_io_cq *bic) in bfq_set_next_ioprio_data() argument
5011 ioprio_class = IOPRIO_PRIO_CLASS(bic->ioprio); in bfq_set_next_ioprio_data()
5026 bfqq->new_ioprio = IOPRIO_PRIO_DATA(bic->ioprio); in bfq_set_next_ioprio_data()
5030 bfqq->new_ioprio = IOPRIO_PRIO_DATA(bic->ioprio); in bfq_set_next_ioprio_data()
5051 struct bfq_io_cq *bic);
5053 static void bfq_check_ioprio_change(struct bfq_io_cq *bic, struct bio *bio) in bfq_check_ioprio_change() argument
5055 struct bfq_data *bfqd = bic_to_bfqd(bic); in bfq_check_ioprio_change()
5057 int ioprio = bic->icq.ioc->ioprio; in bfq_check_ioprio_change()
5063 if (unlikely(!bfqd) || likely(bic->ioprio == ioprio)) in bfq_check_ioprio_change()
5066 bic->ioprio = ioprio; in bfq_check_ioprio_change()
5068 bfqq = bic_to_bfqq(bic, false); in bfq_check_ioprio_change()
5072 bfqq = bfq_get_queue(bfqd, bio, false, bic); in bfq_check_ioprio_change()
5073 bic_set_bfqq(bic, bfqq, false); in bfq_check_ioprio_change()
5077 bfqq = bic_to_bfqq(bic, true); in bfq_check_ioprio_change()
5079 bfq_set_next_ioprio_data(bfqq, bic); in bfq_check_ioprio_change()
5083 struct bfq_io_cq *bic, pid_t pid, int is_sync) in bfq_init_bfqq() argument
5094 if (bic) in bfq_init_bfqq()
5095 bfq_set_next_ioprio_data(bfqq, bic); in bfq_init_bfqq()
5163 struct bfq_io_cq *bic) in bfq_get_queue() argument
5165 const int ioprio = IOPRIO_PRIO_DATA(bic->ioprio); in bfq_get_queue()
5166 const int ioprio_class = IOPRIO_PRIO_CLASS(bic->ioprio); in bfq_get_queue()
5185 bfq_init_bfqq(bfqd, bfqq, bic, current->pid, in bfq_get_queue()
5247 struct bfq_io_cq *bic) in bfq_update_has_short_ttime() argument
5269 if (atomic_read(&bic->icq.ioc->active_ref) == 0 || in bfq_update_has_short_ttime()
6003 bfq_split_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq) in bfq_split_bfqq() argument
6014 bic_set_bfqq(bic, NULL, true); in bfq_split_bfqq()
6023 struct bfq_io_cq *bic, in bfq_get_bfqq_handle_split() argument
6028 struct bfq_queue *bfqq = bic_to_bfqq(bic, is_sync); in bfq_get_bfqq_handle_split()
6038 bfqq = bfq_get_queue(bfqd, bio, is_sync, bic); in bfq_get_bfqq_handle_split()
6040 bic_set_bfqq(bic, bfqq, is_sync); in bfq_get_bfqq_handle_split()
6042 if ((bic->was_in_burst_list && bfqd->large_burst) || in bfq_get_bfqq_handle_split()
6043 bic->saved_in_large_burst) in bfq_get_bfqq_handle_split()
6047 if (bic->was_in_burst_list) in bfq_get_bfqq_handle_split()
6129 struct bfq_io_cq *bic; in bfq_init_rq() local
6148 bic = icq_to_bic(rq->elv.icq); in bfq_init_rq()
6150 bfq_check_ioprio_change(bic, bio); in bfq_init_rq()
6152 bfq_bic_update_cgroup(bic, bio); in bfq_init_rq()
6154 bfqq = bfq_get_bfqq_handle_split(bfqd, bic, bio, false, is_sync, in bfq_init_rq()
6164 bic->saved_in_large_burst = true; in bfq_init_rq()
6166 bfqq = bfq_split_bfqq(bic, bfqq); in bfq_init_rq()
6170 bfqq = bfq_get_bfqq_handle_split(bfqd, bic, bio, in bfq_init_rq()
6183 rq->elv.priv[0] = bic; in bfq_init_rq()
6193 bfqq->bic = bic; in bfq_init_rq()
6200 bfq_bfqq_resume_state(bfqq, bfqd, bic, in bfq_init_rq()