Lines Matching refs:direction

40 static void timer_cb(ThrottleGroupMember *tgm, ThrottleDirection direction);
204 ThrottleDirection direction) in tgm_has_pending_reqs() argument
206 return tgm->pending_reqs[direction]; in tgm_has_pending_reqs()
220 ThrottleDirection direction) in next_throttle_token() argument
230 if (tgm_has_pending_reqs(tgm, direction) && in next_throttle_token()
235 start = token = tg->tokens[direction]; in next_throttle_token()
239 while (token != start && !tgm_has_pending_reqs(token, direction)) { in next_throttle_token()
247 if (token == start && !tgm_has_pending_reqs(token, direction)) { in next_throttle_token()
252 assert(token == tgm || tgm_has_pending_reqs(token, direction)); in next_throttle_token()
268 ThrottleDirection direction) in throttle_group_schedule_timer() argument
280 if (tg->any_timer_armed[direction]) { in throttle_group_schedule_timer()
284 must_wait = throttle_schedule_timer(ts, tt, direction); in throttle_group_schedule_timer()
288 tg->tokens[direction] = tgm; in throttle_group_schedule_timer()
289 tg->any_timer_armed[direction] = true; in throttle_group_schedule_timer()
302 ThrottleDirection direction) in throttle_group_co_restart_queue() argument
307 ret = qemu_co_queue_next(&tgm->throttled_reqs[direction]); in throttle_group_co_restart_queue()
321 ThrottleDirection direction) in schedule_next_request() argument
329 token = next_throttle_token(tgm, direction); in schedule_next_request()
330 if (!tgm_has_pending_reqs(token, direction)) { in schedule_next_request()
335 must_wait = throttle_group_schedule_timer(token, direction); in schedule_next_request()
341 throttle_group_co_restart_queue(tgm, direction)) { in schedule_next_request()
346 timer_mod(tt->timers[direction], now); in schedule_next_request()
347 tg->any_timer_armed[direction] = true; in schedule_next_request()
349 tg->tokens[direction] = token; in schedule_next_request()
363 ThrottleDirection direction) in throttle_group_co_io_limits_intercept() argument
370 assert(direction < THROTTLE_MAX); in throttle_group_co_io_limits_intercept()
375 token = next_throttle_token(tgm, direction); in throttle_group_co_io_limits_intercept()
376 must_wait = throttle_group_schedule_timer(token, direction); in throttle_group_co_io_limits_intercept()
379 if (must_wait || tgm->pending_reqs[direction]) { in throttle_group_co_io_limits_intercept()
380 tgm->pending_reqs[direction]++; in throttle_group_co_io_limits_intercept()
383 qemu_co_queue_wait(&tgm->throttled_reqs[direction], in throttle_group_co_io_limits_intercept()
387 tgm->pending_reqs[direction]--; in throttle_group_co_io_limits_intercept()
391 throttle_account(tgm->throttle_state, direction, bytes); in throttle_group_co_io_limits_intercept()
394 schedule_next_request(tgm, direction); in throttle_group_co_io_limits_intercept()
401 ThrottleDirection direction; member
410 ThrottleDirection direction = data->direction; in throttle_group_restart_queue_entry() local
413 empty_queue = !throttle_group_co_restart_queue(tgm, direction); in throttle_group_restart_queue_entry()
419 schedule_next_request(tgm, direction); in throttle_group_restart_queue_entry()
430 ThrottleDirection direction) in throttle_group_restart_queue() argument
436 rd->direction = direction; in throttle_group_restart_queue()
441 assert(!timer_pending(tgm->throttle_timers.timers[direction])); in throttle_group_restart_queue()
508 static void timer_cb(ThrottleGroupMember *tgm, ThrottleDirection direction) in timer_cb() argument
515 tg->any_timer_armed[direction] = false; in timer_cb()
519 throttle_group_restart_queue(tgm, direction); in timer_cb()