Lines Matching refs:scheme
360 struct damos *scheme; in damon_new_scheme() local
362 scheme = kmalloc(sizeof(*scheme), GFP_KERNEL); in damon_new_scheme()
363 if (!scheme) in damon_new_scheme()
365 scheme->pattern = *pattern; in damon_new_scheme()
366 scheme->action = action; in damon_new_scheme()
367 scheme->apply_interval_us = apply_interval_us; in damon_new_scheme()
373 scheme->next_apply_sis = 0; in damon_new_scheme()
374 INIT_LIST_HEAD(&scheme->filters); in damon_new_scheme()
375 scheme->stat = (struct damos_stat){}; in damon_new_scheme()
376 INIT_LIST_HEAD(&scheme->list); in damon_new_scheme()
378 scheme->quota = *(damos_quota_init(quota)); in damon_new_scheme()
380 INIT_LIST_HEAD(&scheme->quota.goals); in damon_new_scheme()
382 scheme->wmarks = *wmarks; in damon_new_scheme()
383 scheme->wmarks.activated = true; in damon_new_scheme()
385 scheme->target_nid = target_nid; in damon_new_scheme()
387 return scheme; in damon_new_scheme()
1878 static unsigned long damos_wmark_wait_us(struct damos *scheme) in damos_wmark_wait_us() argument
1882 if (damos_get_wmark_metric_value(scheme->wmarks.metric, &metric)) in damos_wmark_wait_us()
1886 if (metric > scheme->wmarks.high || scheme->wmarks.low > metric) { in damos_wmark_wait_us()
1887 if (scheme->wmarks.activated) in damos_wmark_wait_us()
1889 scheme->action, in damos_wmark_wait_us()
1890 metric > scheme->wmarks.high ? in damos_wmark_wait_us()
1892 scheme->wmarks.activated = false; in damos_wmark_wait_us()
1893 return scheme->wmarks.interval; in damos_wmark_wait_us()
1897 if ((scheme->wmarks.high >= metric && metric >= scheme->wmarks.mid) && in damos_wmark_wait_us()
1898 !scheme->wmarks.activated) in damos_wmark_wait_us()
1899 return scheme->wmarks.interval; in damos_wmark_wait_us()
1901 if (!scheme->wmarks.activated) in damos_wmark_wait_us()
1902 pr_debug("activate a scheme (%d)\n", scheme->action); in damos_wmark_wait_us()
1903 scheme->wmarks.activated = true; in damos_wmark_wait_us()
1949 struct damos *scheme; in kdamond_init_intervals_sis() local
1956 damon_for_each_scheme(scheme, ctx) { in kdamond_init_intervals_sis()
1957 apply_interval = scheme->apply_interval_us ? in kdamond_init_intervals_sis()
1958 scheme->apply_interval_us : ctx->attrs.aggr_interval; in kdamond_init_intervals_sis()
1959 scheme->next_apply_sis = apply_interval / sample_interval; in kdamond_init_intervals_sis()