Lines Matching refs:sq

61  * @sq: the throtl_service_queue of interest
63 * Return the throtl_grp @sq belongs to. If @sq is the top-level one
66 static struct throtl_grp *sq_to_tg(struct throtl_service_queue *sq)
68 if (sq && sq->parent_sq)
69 return container_of(sq, struct throtl_grp, service_queue);
76 * @sq: the throtl_service_queue of interest
81 static struct throtl_data *sq_to_td(struct throtl_service_queue *sq)
83 struct throtl_grp *tg = sq_to_tg(sq);
88 return container_of(sq, struct throtl_data, service_queue);
113 * @sq: the service_queue being reported
117 * The messages are prefixed with "throtl BLKG_NAME" if @sq belongs to a
120 #define throtl_log(sq, fmt, args...) do { \
121 struct throtl_grp *__tg = sq_to_tg((sq)); \
122 struct throtl_data *__td = sq_to_td((sq)); \
229 static void throtl_service_queue_init(struct throtl_service_queue *sq)
231 INIT_LIST_HEAD(&sq->queued[READ]);
232 INIT_LIST_HEAD(&sq->queued[WRITE]);
233 sq->pending_tree = RB_ROOT_CACHED;
234 timer_setup(&sq->pending_timer, throtl_pending_timer_fn, 0);
280 struct throtl_service_queue *sq = &tg->service_queue;
296 sq->parent_sq = &td->service_queue;
298 sq->parent_sq = &blkg_to_tg(blkg->parent)->service_queue;
420 static void throtl_schedule_pending_timer(struct throtl_service_queue *sq,
423 unsigned long max_expire = jiffies + 8 * sq_to_td(sq)->throtl_slice;
434 mod_timer(&sq->pending_timer, expires);
435 throtl_log(sq, "schedule timer. delay=%lu jiffies=%lu",
441 * @sq: the service_queue to schedule dispatch for
444 * Arm @sq->pending_timer so that the next dispatch cycle starts on the
454 * delay before dispatch starts even if @sq->first_pending_disptime is not
457 static bool throtl_schedule_next_dispatch(struct throtl_service_queue *sq,
461 if (!sq->nr_pending)
464 update_min_dispatch_time(sq);
467 if (force || time_after(sq->first_pending_disptime, jiffies)) {
468 throtl_schedule_pending_timer(sq, sq->first_pending_disptime);
834 struct throtl_service_queue *sq = &tg->service_queue;
846 if (!sq->nr_queued[rw])
849 throtl_qnode_add_bio(bio, qn, &sq->queued[rw]);
851 sq->nr_queued[rw]++;
857 struct throtl_service_queue *sq = &tg->service_queue;
861 bio = throtl_peek_queued(&sq->queued[READ]);
865 bio = throtl_peek_queued(&sq->queued[WRITE]);
893 struct throtl_service_queue *sq = &tg->service_queue;
894 struct throtl_service_queue *parent_sq = sq->parent_sq;
905 bio = throtl_pop_queued(&sq->queued[rw], &tg_to_put);
906 sq->nr_queued[rw]--;
936 struct throtl_service_queue *sq = &tg->service_queue;
944 while ((bio = throtl_peek_queued(&sq->queued[READ])) &&
954 while ((bio = throtl_peek_queued(&sq->queued[WRITE])) &&
973 struct throtl_service_queue *sq;
987 sq = &tg->service_queue;
988 if (sq->nr_queued[READ] || sq->nr_queued[WRITE])
1017 struct throtl_service_queue *sq = from_timer(sq, t, pending_timer);
1018 struct throtl_grp *tg = sq_to_tg(sq);
1019 struct throtl_data *td = sq_to_td(sq);
1037 parent_sq = sq->parent_sq;
1041 throtl_log(sq, "dispatch nr_queued=%u read=%u write=%u",
1042 sq->nr_queued[READ] + sq->nr_queued[WRITE],
1043 sq->nr_queued[READ], sq->nr_queued[WRITE]);
1045 ret = throtl_select_dispatch(sq);
1047 throtl_log(sq, "bios disp=%u", ret);
1051 if (throtl_schedule_next_dispatch(sq, false))
1069 sq = parent_sq;
1070 tg = sq_to_tg(sq);
1155 struct throtl_service_queue *sq = &tg->service_queue;
1197 throtl_schedule_next_dispatch(sq->parent_sq, true);
1532 struct throtl_service_queue *sq = &tg->service_queue;
1558 throtl_schedule_pending_timer(sq, jiffies + 1);
1630 struct throtl_service_queue *sq;
1637 sq = &tg->service_queue;
1675 sq = sq->parent_sq;
1676 tg = sq_to_tg(sq);
1684 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
1689 sq->nr_queued[READ], sq->nr_queued[WRITE]);