iocg 196 block/blk-iocost.c #define TRACE_IOCG_PATH(type, iocg, ...) \ iocg 201 block/blk-iocost.c cgroup_path(iocg_to_blkg(iocg)->blkcg->css.cgroup, \ iocg 203 block/blk-iocost.c trace_iocost_##type(iocg, trace_iocg_path, \ iocg 210 block/blk-iocost.c #define TRACE_IOCG_PATH(type, iocg, ...) do { } while (0) iocg 524 block/blk-iocost.c struct ioc_gq *iocg; iocg 644 block/blk-iocost.c static struct blkcg_gq *iocg_to_blkg(struct ioc_gq *iocg) iocg 646 block/blk-iocost.c return pd_to_blkg(&iocg->pd); iocg 672 block/blk-iocost.c static void iocg_commit_bio(struct ioc_gq *iocg, struct bio *bio, u64 cost) iocg 675 block/blk-iocost.c atomic64_add(cost, &iocg->vtime); iocg 894 block/blk-iocost.c static void __propagate_active_weight(struct ioc_gq *iocg, u32 active, u32 inuse) iocg 896 block/blk-iocost.c struct ioc *ioc = iocg->ioc; iocg 903 block/blk-iocost.c for (lvl = iocg->level - 1; lvl >= 0; lvl--) { iocg 904 block/blk-iocost.c struct ioc_gq *parent = iocg->ancestors[lvl]; iocg 905 block/blk-iocost.c struct ioc_gq *child = iocg->ancestors[lvl + 1]; iocg 951 block/blk-iocost.c static void propagate_active_weight(struct ioc_gq *iocg, u32 active, u32 inuse) iocg 953 block/blk-iocost.c __propagate_active_weight(iocg, active, inuse); iocg 954 block/blk-iocost.c commit_active_weights(iocg->ioc); iocg 957 block/blk-iocost.c static void current_hweight(struct ioc_gq *iocg, u32 *hw_activep, u32 *hw_inusep) iocg 959 block/blk-iocost.c struct ioc *ioc = iocg->ioc; iocg 966 block/blk-iocost.c if (ioc_gen == iocg->hweight_gen) iocg 982 block/blk-iocost.c for (lvl = 0; lvl <= iocg->level - 1; lvl++) { iocg 983 block/blk-iocost.c struct ioc_gq *parent = iocg->ancestors[lvl]; iocg 984 block/blk-iocost.c struct ioc_gq *child = iocg->ancestors[lvl + 1]; iocg 1001 block/blk-iocost.c iocg->hweight_active = max_t(u32, hwa, 1); iocg 1002 block/blk-iocost.c iocg->hweight_inuse = max_t(u32, hwi, 1); iocg 1003 block/blk-iocost.c iocg->hweight_gen = ioc_gen; iocg 1006 block/blk-iocost.c *hw_activep = iocg->hweight_active; iocg 1008 block/blk-iocost.c *hw_inusep = iocg->hweight_inuse; iocg 1011 block/blk-iocost.c static void weight_updated(struct ioc_gq *iocg) iocg 1013 block/blk-iocost.c struct ioc *ioc = iocg->ioc; iocg 1014 block/blk-iocost.c struct blkcg_gq *blkg = iocg_to_blkg(iocg); iocg 1020 block/blk-iocost.c weight = iocg->cfg_weight ?: iocc->dfl_weight; iocg 1021 block/blk-iocost.c if (weight != iocg->weight && iocg->active) iocg 1022 block/blk-iocost.c propagate_active_weight(iocg, weight, iocg 1023 block/blk-iocost.c DIV64_U64_ROUND_UP(iocg->inuse * weight, iocg->weight)); iocg 1024 block/blk-iocost.c iocg->weight = weight; iocg 1027 block/blk-iocost.c static bool iocg_activate(struct ioc_gq *iocg, struct ioc_now *now) iocg 1029 block/blk-iocost.c struct ioc *ioc = iocg->ioc; iocg 1038 block/blk-iocost.c if (!list_empty(&iocg->active_list)) { iocg 1041 block/blk-iocost.c if (atomic64_read(&iocg->active_period) != cur_period) iocg 1042 block/blk-iocost.c atomic64_set(&iocg->active_period, cur_period); iocg 1047 block/blk-iocost.c if (iocg->child_active_sum) iocg 1056 block/blk-iocost.c last_period = atomic64_read(&iocg->active_period); iocg 1057 block/blk-iocost.c atomic64_set(&iocg->active_period, cur_period); iocg 1060 block/blk-iocost.c if (!list_empty(&iocg->active_list)) iocg 1062 block/blk-iocost.c for (i = iocg->level - 1; i > 0; i--) iocg 1063 block/blk-iocost.c if (!list_empty(&iocg->ancestors[i]->active_list)) iocg 1066 block/blk-iocost.c if (iocg->child_active_sum) iocg 1076 block/blk-iocost.c vtime = atomic64_read(&iocg->vtime); iocg 1082 block/blk-iocost.c atomic64_add(vmin - vtime, &iocg->vtime); iocg 1083 block/blk-iocost.c atomic64_add(vmin - vtime, &iocg->done_vtime); iocg 1092 block/blk-iocost.c iocg->hweight_gen = atomic_read(&ioc->hweight_gen) - 1; iocg 1093 block/blk-iocost.c list_add(&iocg->active_list, &ioc->active_iocgs); iocg 1094 block/blk-iocost.c propagate_active_weight(iocg, iocg->weight, iocg 1095 block/blk-iocost.c iocg->last_inuse ?: iocg->weight); iocg 1097 block/blk-iocost.c TRACE_IOCG_PATH(iocg_activate, iocg, now, iocg 1100 block/blk-iocost.c iocg->last_vtime = vtime; iocg 1128 block/blk-iocost.c iocg_commit_bio(ctx->iocg, wait->bio, cost); iocg 1142 block/blk-iocost.c static void iocg_kick_waitq(struct ioc_gq *iocg, struct ioc_now *now) iocg 1144 block/blk-iocost.c struct ioc *ioc = iocg->ioc; iocg 1145 block/blk-iocost.c struct iocg_wake_ctx ctx = { .iocg = iocg }; iocg 1152 block/blk-iocost.c lockdep_assert_held(&iocg->waitq.lock); iocg 1154 block/blk-iocost.c current_hweight(iocg, NULL, &hw_inuse); iocg 1155 block/blk-iocost.c vbudget = now->vnow - atomic64_read(&iocg->vtime); iocg 1158 block/blk-iocost.c vdebt = abs_cost_to_cost(iocg->abs_vdebt, hw_inuse); iocg 1162 block/blk-iocost.c iocg->abs_vdebt); iocg 1164 block/blk-iocost.c atomic64_add(delta, &iocg->vtime); iocg 1165 block/blk-iocost.c atomic64_add(delta, &iocg->done_vtime); iocg 1166 block/blk-iocost.c iocg->abs_vdebt -= abs_delta; iocg 1175 block/blk-iocost.c __wake_up_locked_key(&iocg->waitq, TASK_NORMAL, &ctx); iocg 1176 block/blk-iocost.c if (!waitqueue_active(&iocg->waitq)) iocg 1188 block/blk-iocost.c oexpires = ktime_to_ns(hrtimer_get_softexpires(&iocg->waitq_timer)); iocg 1189 block/blk-iocost.c if (hrtimer_is_queued(&iocg->waitq_timer) && iocg 1193 block/blk-iocost.c hrtimer_start_range_ns(&iocg->waitq_timer, ns_to_ktime(expires), iocg 1199 block/blk-iocost.c struct ioc_gq *iocg = container_of(timer, struct ioc_gq, waitq_timer); iocg 1203 block/blk-iocost.c ioc_now(iocg->ioc, &now); iocg 1205 block/blk-iocost.c spin_lock_irqsave(&iocg->waitq.lock, flags); iocg 1206 block/blk-iocost.c iocg_kick_waitq(iocg, &now); iocg 1207 block/blk-iocost.c spin_unlock_irqrestore(&iocg->waitq.lock, flags); iocg 1212 block/blk-iocost.c static bool iocg_kick_delay(struct ioc_gq *iocg, struct ioc_now *now, u64 cost) iocg 1214 block/blk-iocost.c struct ioc *ioc = iocg->ioc; iocg 1215 block/blk-iocost.c struct blkcg_gq *blkg = iocg_to_blkg(iocg); iocg 1216 block/blk-iocost.c u64 vtime = atomic64_read(&iocg->vtime); iocg 1222 block/blk-iocost.c lockdep_assert_held(&iocg->waitq.lock); iocg 1225 block/blk-iocost.c current_hweight(iocg, NULL, &hw_inuse); iocg 1226 block/blk-iocost.c vtime += abs_cost_to_cost(iocg->abs_vdebt, hw_inuse); iocg 1233 block/blk-iocost.c if (!iocg->abs_vdebt || time_before_eq64(vtime, now->vnow)) { iocg 1253 block/blk-iocost.c oexpires = ktime_to_ns(hrtimer_get_softexpires(&iocg->delay_timer)); iocg 1254 block/blk-iocost.c if (hrtimer_is_queued(&iocg->delay_timer) && iocg 1258 block/blk-iocost.c hrtimer_start_range_ns(&iocg->delay_timer, ns_to_ktime(expires), iocg 1265 block/blk-iocost.c struct ioc_gq *iocg = container_of(timer, struct ioc_gq, delay_timer); iocg 1269 block/blk-iocost.c spin_lock_irqsave(&iocg->waitq.lock, flags); iocg 1270 block/blk-iocost.c ioc_now(iocg->ioc, &now); iocg 1271 block/blk-iocost.c iocg_kick_delay(iocg, &now, 0); iocg 1272 block/blk-iocost.c spin_unlock_irqrestore(&iocg->waitq.lock, flags); iocg 1317 block/blk-iocost.c static bool iocg_is_idle(struct ioc_gq *iocg) iocg 1319 block/blk-iocost.c struct ioc *ioc = iocg->ioc; iocg 1322 block/blk-iocost.c if (atomic64_read(&iocg->active_period) == iocg 1327 block/blk-iocost.c if (atomic64_read(&iocg->done_vtime) != atomic64_read(&iocg->vtime)) iocg 1350 block/blk-iocost.c struct ioc_gq *iocg, *tiocg; iocg 1379 block/blk-iocost.c list_for_each_entry_safe(iocg, tiocg, &ioc->active_iocgs, active_list) { iocg 1380 block/blk-iocost.c if (!waitqueue_active(&iocg->waitq) && iocg->abs_vdebt && iocg 1381 block/blk-iocost.c !iocg_is_idle(iocg)) iocg 1384 block/blk-iocost.c spin_lock(&iocg->waitq.lock); iocg 1386 block/blk-iocost.c if (waitqueue_active(&iocg->waitq) || iocg->abs_vdebt) { iocg 1388 block/blk-iocost.c iocg_kick_waitq(iocg, &now); iocg 1389 block/blk-iocost.c iocg_kick_delay(iocg, &now, 0); iocg 1390 block/blk-iocost.c } else if (iocg_is_idle(iocg)) { iocg 1392 block/blk-iocost.c iocg->last_inuse = iocg->inuse; iocg 1393 block/blk-iocost.c __propagate_active_weight(iocg, 0, 0); iocg 1394 block/blk-iocost.c list_del_init(&iocg->active_list); iocg 1397 block/blk-iocost.c spin_unlock(&iocg->waitq.lock); iocg 1402 block/blk-iocost.c list_for_each_entry(iocg, &ioc->active_iocgs, active_list) { iocg 1410 block/blk-iocost.c vdone = atomic64_read(&iocg->done_vtime); iocg 1411 block/blk-iocost.c vtime = atomic64_read(&iocg->vtime); iocg 1412 block/blk-iocost.c current_hweight(iocg, &hw_active, &hw_inuse); iocg 1421 block/blk-iocost.c !atomic_read(&iocg_to_blkg(iocg)->use_delay) && iocg 1428 block/blk-iocost.c if (waitqueue_active(&iocg->waitq)) iocg 1429 block/blk-iocost.c vusage = now.vnow - iocg->last_vtime; iocg 1430 block/blk-iocost.c else if (time_before64(iocg->last_vtime, vtime)) iocg 1431 block/blk-iocost.c vusage = vtime - iocg->last_vtime; iocg 1435 block/blk-iocost.c iocg->last_vtime += vusage; iocg 1447 block/blk-iocost.c iocg->usage_idx = (iocg->usage_idx + 1) % NR_USAGE_SLOTS; iocg 1448 block/blk-iocost.c iocg->usages[iocg->usage_idx] = usage; iocg 1457 block/blk-iocost.c iocg->has_surplus = false; iocg 1459 block/blk-iocost.c if (!waitqueue_active(&iocg->waitq) && iocg 1464 block/blk-iocost.c atomic64_add(delta, &iocg->vtime); iocg 1465 block/blk-iocost.c atomic64_add(delta, &iocg->done_vtime); iocg 1466 block/blk-iocost.c iocg->last_vtime += delta; iocg 1469 block/blk-iocost.c iocg->has_surplus = true; iocg 1476 block/blk-iocost.c if (waitqueue_active(&iocg->waitq)) { iocg 1484 block/blk-iocost.c new_inuse = div64_u64((u64)iocg->inuse * new_hwi, iocg 1486 block/blk-iocost.c new_inuse = clamp_t(u32, new_inuse, 1, iocg->active); iocg 1488 block/blk-iocost.c if (new_inuse > iocg->inuse) { iocg 1489 block/blk-iocost.c TRACE_IOCG_PATH(inuse_takeback, iocg, &now, iocg 1490 block/blk-iocost.c iocg->inuse, new_inuse, iocg 1492 block/blk-iocost.c __propagate_active_weight(iocg, iocg->weight, iocg 1505 block/blk-iocost.c list_for_each_entry(iocg, &ioc->active_iocgs, active_list) { iocg 1509 block/blk-iocost.c if (!iocg->has_surplus) iocg 1514 block/blk-iocost.c if (iocg->usages[i]) { iocg 1515 block/blk-iocost.c usage = max(usage, iocg->usages[i]); iocg 1522 block/blk-iocost.c current_hweight(iocg, &hw_active, &hw_inuse); iocg 1527 block/blk-iocost.c new_inuse = DIV64_U64_ROUND_UP((u64)iocg->inuse * new_hwi, iocg 1529 block/blk-iocost.c if (new_inuse < iocg->inuse) { iocg 1530 block/blk-iocost.c TRACE_IOCG_PATH(inuse_giveaway, iocg, &now, iocg 1531 block/blk-iocost.c iocg->inuse, new_inuse, iocg 1533 block/blk-iocost.c __propagate_active_weight(iocg, iocg->weight, new_inuse); iocg 1635 block/blk-iocost.c static void calc_vtime_cost_builtin(struct bio *bio, struct ioc_gq *iocg, iocg 1638 block/blk-iocost.c struct ioc *ioc = iocg->ioc; iocg 1659 block/blk-iocost.c if (iocg->cursor) { iocg 1660 block/blk-iocost.c seek_pages = abs(bio->bi_iter.bi_sector - iocg->cursor); iocg 1676 block/blk-iocost.c static u64 calc_vtime_cost(struct bio *bio, struct ioc_gq *iocg, bool is_merge) iocg 1680 block/blk-iocost.c calc_vtime_cost_builtin(bio, iocg, is_merge, &cost); iocg 1688 block/blk-iocost.c struct ioc_gq *iocg = blkg_to_iocg(blkg); iocg 1695 block/blk-iocost.c if (!ioc->enabled || !iocg->level) iocg 1699 block/blk-iocost.c if (!iocg_activate(iocg, &now)) iocg 1703 block/blk-iocost.c abs_cost = calc_vtime_cost(bio, iocg, false); iocg 1707 block/blk-iocost.c iocg->cursor = bio_end_sector(bio); iocg 1709 block/blk-iocost.c vtime = atomic64_read(&iocg->vtime); iocg 1710 block/blk-iocost.c current_hweight(iocg, &hw_active, &hw_inuse); iocg 1714 block/blk-iocost.c TRACE_IOCG_PATH(inuse_reset, iocg, &now, iocg 1715 block/blk-iocost.c iocg->inuse, iocg->weight, hw_inuse, hw_active); iocg 1717 block/blk-iocost.c propagate_active_weight(iocg, iocg->weight, iocg->weight); iocg 1719 block/blk-iocost.c current_hweight(iocg, &hw_active, &hw_inuse); iocg 1729 block/blk-iocost.c if (!waitqueue_active(&iocg->waitq) && !iocg->abs_vdebt && iocg 1731 block/blk-iocost.c iocg_commit_bio(iocg, bio, cost); iocg 1741 block/blk-iocost.c spin_lock_irq(&iocg->waitq.lock); iocg 1743 block/blk-iocost.c if (unlikely(list_empty(&iocg->active_list))) { iocg 1744 block/blk-iocost.c spin_unlock_irq(&iocg->waitq.lock); iocg 1745 block/blk-iocost.c iocg_commit_bio(iocg, bio, cost); iocg 1767 block/blk-iocost.c iocg->abs_vdebt += abs_cost; iocg 1768 block/blk-iocost.c if (iocg_kick_delay(iocg, &now, cost)) iocg 1771 block/blk-iocost.c spin_unlock_irq(&iocg->waitq.lock); iocg 1794 block/blk-iocost.c __add_wait_queue_entry_tail(&iocg->waitq, &wait.wait); iocg 1795 block/blk-iocost.c iocg_kick_waitq(iocg, &now); iocg 1797 block/blk-iocost.c spin_unlock_irq(&iocg->waitq.lock); iocg 1807 block/blk-iocost.c finish_wait(&iocg->waitq, &wait.wait); iocg 1813 block/blk-iocost.c struct ioc_gq *iocg = blkg_to_iocg(bio->bi_blkg); iocg 1814 block/blk-iocost.c struct ioc *ioc = iocg->ioc; iocg 1822 block/blk-iocost.c if (!ioc->enabled || !iocg->level) iocg 1825 block/blk-iocost.c abs_cost = calc_vtime_cost(bio, iocg, true); iocg 1830 block/blk-iocost.c current_hweight(iocg, NULL, &hw_inuse); iocg 1835 block/blk-iocost.c blk_rq_pos(rq) + blk_rq_sectors(rq) == iocg->cursor) iocg 1836 block/blk-iocost.c iocg->cursor = bio_end; iocg 1843 block/blk-iocost.c time_before_eq64(atomic64_read(&iocg->vtime) + cost, now.vnow)) { iocg 1844 block/blk-iocost.c iocg_commit_bio(iocg, bio, cost); iocg 1853 block/blk-iocost.c spin_lock_irqsave(&iocg->waitq.lock, flags); iocg 1854 block/blk-iocost.c if (likely(!list_empty(&iocg->active_list))) { iocg 1855 block/blk-iocost.c iocg->abs_vdebt += abs_cost; iocg 1856 block/blk-iocost.c iocg_kick_delay(iocg, &now, cost); iocg 1858 block/blk-iocost.c iocg_commit_bio(iocg, bio, cost); iocg 1860 block/blk-iocost.c spin_unlock_irqrestore(&iocg->waitq.lock, flags); iocg 1865 block/blk-iocost.c struct ioc_gq *iocg = blkg_to_iocg(bio->bi_blkg); iocg 1867 block/blk-iocost.c if (iocg && bio->bi_iocost_cost) iocg 1868 block/blk-iocost.c atomic64_add(bio->bi_iocost_cost, &iocg->done_vtime); iocg 2006 block/blk-iocost.c struct ioc_gq *iocg; iocg 2008 block/blk-iocost.c iocg = kzalloc_node(sizeof(*iocg) + levels * sizeof(iocg->ancestors[0]), iocg 2010 block/blk-iocost.c if (!iocg) iocg 2013 block/blk-iocost.c return &iocg->pd; iocg 2018 block/blk-iocost.c struct ioc_gq *iocg = pd_to_iocg(pd); iocg 2019 block/blk-iocost.c struct blkcg_gq *blkg = pd_to_blkg(&iocg->pd); iocg 2027 block/blk-iocost.c iocg->ioc = ioc; iocg 2028 block/blk-iocost.c atomic64_set(&iocg->vtime, now.vnow); iocg 2029 block/blk-iocost.c atomic64_set(&iocg->done_vtime, now.vnow); iocg 2030 block/blk-iocost.c atomic64_set(&iocg->active_period, atomic64_read(&ioc->cur_period)); iocg 2031 block/blk-iocost.c INIT_LIST_HEAD(&iocg->active_list); iocg 2032 block/blk-iocost.c iocg->hweight_active = HWEIGHT_WHOLE; iocg 2033 block/blk-iocost.c iocg->hweight_inuse = HWEIGHT_WHOLE; iocg 2035 block/blk-iocost.c init_waitqueue_head(&iocg->waitq); iocg 2036 block/blk-iocost.c hrtimer_init(&iocg->waitq_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); iocg 2037 block/blk-iocost.c iocg->waitq_timer.function = iocg_waitq_timer_fn; iocg 2038 block/blk-iocost.c hrtimer_init(&iocg->delay_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); iocg 2039 block/blk-iocost.c iocg->delay_timer.function = iocg_delay_timer_fn; iocg 2041 block/blk-iocost.c iocg->level = blkg->blkcg->css.cgroup->level; iocg 2045 block/blk-iocost.c iocg->ancestors[tiocg->level] = tiocg; iocg 2049 block/blk-iocost.c weight_updated(iocg); iocg 2055 block/blk-iocost.c struct ioc_gq *iocg = pd_to_iocg(pd); iocg 2056 block/blk-iocost.c struct ioc *ioc = iocg->ioc; iocg 2060 block/blk-iocost.c if (!list_empty(&iocg->active_list)) { iocg 2061 block/blk-iocost.c propagate_active_weight(iocg, 0, 0); iocg 2062 block/blk-iocost.c list_del_init(&iocg->active_list); iocg 2066 block/blk-iocost.c hrtimer_cancel(&iocg->waitq_timer); iocg 2067 block/blk-iocost.c hrtimer_cancel(&iocg->delay_timer); iocg 2069 block/blk-iocost.c kfree(iocg); iocg 2076 block/blk-iocost.c struct ioc_gq *iocg = pd_to_iocg(pd); iocg 2078 block/blk-iocost.c if (dname && iocg->cfg_weight) iocg 2079 block/blk-iocost.c seq_printf(sf, "%s %u\n", dname, iocg->cfg_weight); iocg 2101 block/blk-iocost.c struct ioc_gq *iocg; iocg 2117 block/blk-iocost.c struct ioc_gq *iocg = blkg_to_iocg(blkg); iocg 2119 block/blk-iocost.c if (iocg) { iocg 2120 block/blk-iocost.c spin_lock_irq(&iocg->ioc->lock); iocg 2121 block/blk-iocost.c weight_updated(iocg); iocg 2122 block/blk-iocost.c spin_unlock_irq(&iocg->ioc->lock); iocg 2134 block/blk-iocost.c iocg = blkg_to_iocg(ctx.blkg); iocg 2145 block/blk-iocost.c spin_lock(&iocg->ioc->lock); iocg 2146 block/blk-iocost.c iocg->cfg_weight = v; iocg 2147 block/blk-iocost.c weight_updated(iocg); iocg 2148 block/blk-iocost.c spin_unlock(&iocg->ioc->lock); iocg 16 include/trace/events/iocost.h TP_PROTO(struct ioc_gq *iocg, const char *path, struct ioc_now *now, iocg 19 include/trace/events/iocost.h TP_ARGS(iocg, path, now, last_period, cur_period, vtime), iocg 22 include/trace/events/iocost.h __string(devname, ioc_name(iocg->ioc)) iocg 38 include/trace/events/iocost.h __assign_str(devname, ioc_name(iocg->ioc)); iocg 45 include/trace/events/iocost.h __entry->last_vtime = iocg->last_vtime; iocg 47 include/trace/events/iocost.h __entry->weight = iocg->weight; iocg 48 include/trace/events/iocost.h __entry->inuse = iocg->inuse; iocg 49 include/trace/events/iocost.h __entry->hweight_active = iocg->hweight_active; iocg 50 include/trace/events/iocost.h __entry->hweight_inuse = iocg->hweight_inuse; iocg 67 include/trace/events/iocost.h TP_PROTO(struct ioc_gq *iocg, const char *path, struct ioc_now *now, iocg 71 include/trace/events/iocost.h TP_ARGS(iocg, path, now, old_inuse, new_inuse, iocg 75 include/trace/events/iocost.h __string(devname, ioc_name(iocg->ioc)) iocg 85 include/trace/events/iocost.h __assign_str(devname, ioc_name(iocg->ioc)); iocg 103 include/trace/events/iocost.h TP_PROTO(struct ioc_gq *iocg, const char *path, struct ioc_now *now, iocg 107 include/trace/events/iocost.h TP_ARGS(iocg, path, now, old_inuse, new_inuse, iocg 113 include/trace/events/iocost.h TP_PROTO(struct ioc_gq *iocg, const char *path, struct ioc_now *now, iocg 117 include/trace/events/iocost.h TP_ARGS(iocg, path, now, old_inuse, new_inuse, iocg 123 include/trace/events/iocost.h TP_PROTO(struct ioc_gq *iocg, const char *path, struct ioc_now *now, iocg 127 include/trace/events/iocost.h TP_ARGS(iocg, path, now, old_inuse, new_inuse,