Lines Matching refs:scheme

1469 	struct damon_sysfs_scheme *scheme = kmalloc(sizeof(*scheme),  in damon_sysfs_scheme_alloc()  local
1472 if (!scheme) in damon_sysfs_scheme_alloc()
1474 scheme->kobj = (struct kobject){}; in damon_sysfs_scheme_alloc()
1475 scheme->action = action; in damon_sysfs_scheme_alloc()
1476 scheme->apply_interval_us = apply_interval_us; in damon_sysfs_scheme_alloc()
1477 scheme->target_nid = NUMA_NO_NODE; in damon_sysfs_scheme_alloc()
1478 return scheme; in damon_sysfs_scheme_alloc()
1482 struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_access_pattern() argument
1491 &damon_sysfs_access_pattern_ktype, &scheme->kobj, in damon_sysfs_scheme_set_access_pattern()
1498 scheme->access_pattern = access_pattern; in damon_sysfs_scheme_set_access_pattern()
1506 static int damon_sysfs_scheme_set_quotas(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_quotas() argument
1514 &scheme->kobj, "quotas"); in damon_sysfs_scheme_set_quotas()
1520 scheme->quotas = quotas; in damon_sysfs_scheme_set_quotas()
1528 static int damon_sysfs_scheme_set_watermarks(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_watermarks() argument
1537 &damon_sysfs_watermarks_ktype, &scheme->kobj, in damon_sysfs_scheme_set_watermarks()
1542 scheme->watermarks = watermarks; in damon_sysfs_scheme_set_watermarks()
1546 static int damon_sysfs_scheme_set_filters(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_filters() argument
1555 &damon_sysfs_scheme_filters_ktype, &scheme->kobj, in damon_sysfs_scheme_set_filters()
1560 scheme->filters = filters; in damon_sysfs_scheme_set_filters()
1564 static int damon_sysfs_scheme_set_stats(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_stats() argument
1572 &scheme->kobj, "stats"); in damon_sysfs_scheme_set_stats()
1576 scheme->stats = stats; in damon_sysfs_scheme_set_stats()
1581 struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_tried_regions() argument
1590 &damon_sysfs_scheme_regions_ktype, &scheme->kobj, in damon_sysfs_scheme_set_tried_regions()
1595 scheme->tried_regions = tried_regions; in damon_sysfs_scheme_set_tried_regions()
1599 static int damon_sysfs_scheme_add_dirs(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_add_dirs() argument
1603 err = damon_sysfs_scheme_set_access_pattern(scheme); in damon_sysfs_scheme_add_dirs()
1606 err = damon_sysfs_scheme_set_quotas(scheme); in damon_sysfs_scheme_add_dirs()
1609 err = damon_sysfs_scheme_set_watermarks(scheme); in damon_sysfs_scheme_add_dirs()
1612 err = damon_sysfs_scheme_set_filters(scheme); in damon_sysfs_scheme_add_dirs()
1615 err = damon_sysfs_scheme_set_stats(scheme); in damon_sysfs_scheme_add_dirs()
1618 err = damon_sysfs_scheme_set_tried_regions(scheme); in damon_sysfs_scheme_add_dirs()
1624 kobject_put(&scheme->tried_regions->kobj); in damon_sysfs_scheme_add_dirs()
1625 scheme->tried_regions = NULL; in damon_sysfs_scheme_add_dirs()
1627 kobject_put(&scheme->filters->kobj); in damon_sysfs_scheme_add_dirs()
1628 scheme->filters = NULL; in damon_sysfs_scheme_add_dirs()
1630 kobject_put(&scheme->watermarks->kobj); in damon_sysfs_scheme_add_dirs()
1631 scheme->watermarks = NULL; in damon_sysfs_scheme_add_dirs()
1633 kobject_put(&scheme->quotas->kobj); in damon_sysfs_scheme_add_dirs()
1634 scheme->quotas = NULL; in damon_sysfs_scheme_add_dirs()
1636 kobject_put(&scheme->access_pattern->kobj); in damon_sysfs_scheme_add_dirs()
1637 scheme->access_pattern = NULL; in damon_sysfs_scheme_add_dirs()
1641 static void damon_sysfs_scheme_rm_dirs(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_rm_dirs() argument
1643 damon_sysfs_access_pattern_rm_dirs(scheme->access_pattern); in damon_sysfs_scheme_rm_dirs()
1644 kobject_put(&scheme->access_pattern->kobj); in damon_sysfs_scheme_rm_dirs()
1645 damon_sysfs_quotas_rm_dirs(scheme->quotas); in damon_sysfs_scheme_rm_dirs()
1646 kobject_put(&scheme->quotas->kobj); in damon_sysfs_scheme_rm_dirs()
1647 kobject_put(&scheme->watermarks->kobj); in damon_sysfs_scheme_rm_dirs()
1648 damon_sysfs_scheme_filters_rm_dirs(scheme->filters); in damon_sysfs_scheme_rm_dirs()
1649 kobject_put(&scheme->filters->kobj); in damon_sysfs_scheme_rm_dirs()
1650 kobject_put(&scheme->stats->kobj); in damon_sysfs_scheme_rm_dirs()
1651 damon_sysfs_scheme_regions_rm_dirs(scheme->tried_regions); in damon_sysfs_scheme_rm_dirs()
1652 kobject_put(&scheme->tried_regions->kobj); in damon_sysfs_scheme_rm_dirs()
1658 struct damon_sysfs_scheme *scheme = container_of(kobj, in action_show() local
1662 damon_sysfs_damos_action_strs[scheme->action]); in action_show()
1668 struct damon_sysfs_scheme *scheme = container_of(kobj, in action_store() local
1674 scheme->action = action; in action_store()
1684 struct damon_sysfs_scheme *scheme = container_of(kobj, in apply_interval_us_show() local
1687 return sysfs_emit(buf, "%lu\n", scheme->apply_interval_us); in apply_interval_us_show()
1693 struct damon_sysfs_scheme *scheme = container_of(kobj, in apply_interval_us_store() local
1695 int err = kstrtoul(buf, 0, &scheme->apply_interval_us); in apply_interval_us_store()
1703 struct damon_sysfs_scheme *scheme = container_of(kobj, in target_nid_show() local
1706 return sysfs_emit(buf, "%d\n", scheme->target_nid); in target_nid_show()
1712 struct damon_sysfs_scheme *scheme = container_of(kobj, in target_nid_store() local
1717 err = kstrtoint(buf, 0, &scheme->target_nid); in target_nid_store()
1776 struct damon_sysfs_scheme **schemes_arr, *scheme; in damon_sysfs_schemes_add_dirs() local
1794 scheme = damon_sysfs_scheme_alloc(DAMOS_STAT, 0); in damon_sysfs_schemes_add_dirs()
1795 if (!scheme) { in damon_sysfs_schemes_add_dirs()
1800 err = kobject_init_and_add(&scheme->kobj, in damon_sysfs_schemes_add_dirs()
1805 err = damon_sysfs_scheme_add_dirs(scheme); in damon_sysfs_schemes_add_dirs()
1809 schemes_arr[i] = scheme; in damon_sysfs_schemes_add_dirs()
1816 kobject_put(&scheme->kobj); in damon_sysfs_schemes_add_dirs()
1911 static int damon_sysfs_add_scheme_filters(struct damos *scheme, in damon_sysfs_add_scheme_filters() argument
1945 damos_add_filter(scheme, filter); in damon_sysfs_add_scheme_filters()
1978 struct damos *scheme; in damos_sysfs_set_quota_scores() local
1983 damon_for_each_scheme(scheme, ctx) { in damos_sysfs_set_quota_scores()
2000 err = damos_commit_quota_goals(&scheme->quota, &quota); in damos_sysfs_set_quota_scores()
2014 struct damos *scheme; in damos_sysfs_update_effective_quotas() local
2017 damon_for_each_scheme(scheme, ctx) { in damos_sysfs_update_effective_quotas()
2026 sysfs_quotas->effective_sz = scheme->quota.esz; in damos_sysfs_update_effective_quotas()
2040 struct damos *scheme; in damon_sysfs_mk_scheme() local
2067 scheme = damon_new_scheme(&pattern, sysfs_scheme->action, in damon_sysfs_mk_scheme()
2070 if (!scheme) in damon_sysfs_mk_scheme()
2073 err = damos_sysfs_add_quota_score(sysfs_quotas->goals, &scheme->quota); in damon_sysfs_mk_scheme()
2075 damon_destroy_scheme(scheme); in damon_sysfs_mk_scheme()
2079 err = damon_sysfs_add_scheme_filters(scheme, sysfs_filters); in damon_sysfs_mk_scheme()
2081 damon_destroy_scheme(scheme); in damon_sysfs_mk_scheme()
2084 return scheme; in damon_sysfs_mk_scheme()
2093 struct damos *scheme, *next; in damon_sysfs_add_schemes() local
2095 scheme = damon_sysfs_mk_scheme(sysfs_schemes->schemes_arr[i]); in damon_sysfs_add_schemes()
2096 if (!scheme) { in damon_sysfs_add_schemes()
2097 damon_for_each_scheme_safe(scheme, next, ctx) in damon_sysfs_add_schemes()
2098 damon_destroy_scheme(scheme); in damon_sysfs_add_schemes()
2101 damon_add_scheme(ctx, scheme); in damon_sysfs_add_schemes()
2110 struct damos *scheme; in damon_sysfs_schemes_update_stats() local
2113 damon_for_each_scheme(scheme, ctx) { in damon_sysfs_schemes_update_stats()
2121 sysfs_stats->nr_tried = scheme->stat.nr_tried; in damon_sysfs_schemes_update_stats()
2122 sysfs_stats->sz_tried = scheme->stat.sz_tried; in damon_sysfs_schemes_update_stats()
2123 sysfs_stats->nr_applied = scheme->stat.nr_applied; in damon_sysfs_schemes_update_stats()
2124 sysfs_stats->sz_applied = scheme->stat.sz_applied; in damon_sysfs_schemes_update_stats()
2125 sysfs_stats->qt_exceeds = scheme->stat.qt_exceeds; in damon_sysfs_schemes_update_stats()
2146 struct damos *scheme; in damon_sysfs_before_damos_apply() local
2153 damon_for_each_scheme(scheme, ctx) { in damon_sysfs_before_damos_apply()
2154 if (scheme == s) in damon_sysfs_before_damos_apply()
2214 struct damos *scheme; in damon_sysfs_schemes_clear_regions() local
2217 damon_for_each_scheme(scheme, ctx) { in damon_sysfs_schemes_clear_regions()
2234 struct damos *scheme; in damos_sysfs_nth_scheme() local
2237 damon_for_each_scheme(scheme, ctx) { in damos_sysfs_nth_scheme()
2239 return scheme; in damos_sysfs_nth_scheme()
2250 struct damos *scheme; in damos_tried_regions_init_upd_status() local
2255 scheme = damos_sysfs_nth_scheme(i, ctx); in damos_tried_regions_init_upd_status()
2256 if (!scheme) { in damos_tried_regions_init_upd_status()
2263 2 * usecs_to_jiffies(scheme->apply_interval_us ? in damos_tried_regions_init_upd_status()
2264 scheme->apply_interval_us : in damos_tried_regions_init_upd_status()