Lines Matching refs:scheme
1927 struct damon_sysfs_scheme *scheme = kmalloc(sizeof(*scheme), in damon_sysfs_scheme_alloc() local
1930 if (!scheme) in damon_sysfs_scheme_alloc()
1932 scheme->kobj = (struct kobject){}; in damon_sysfs_scheme_alloc()
1933 scheme->action = action; in damon_sysfs_scheme_alloc()
1934 scheme->apply_interval_us = apply_interval_us; in damon_sysfs_scheme_alloc()
1935 scheme->target_nid = NUMA_NO_NODE; in damon_sysfs_scheme_alloc()
1936 return scheme; in damon_sysfs_scheme_alloc()
1940 struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_access_pattern() argument
1949 &damon_sysfs_access_pattern_ktype, &scheme->kobj, in damon_sysfs_scheme_set_access_pattern()
1956 scheme->access_pattern = access_pattern; in damon_sysfs_scheme_set_access_pattern()
1964 static int damos_sysfs_set_dests(struct damon_sysfs_scheme *scheme) in damos_sysfs_set_dests() argument
1972 &scheme->kobj, "dests"); in damos_sysfs_set_dests()
1976 scheme->dests = dests; in damos_sysfs_set_dests()
1980 static int damon_sysfs_scheme_set_quotas(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_quotas() argument
1988 &scheme->kobj, "quotas"); in damon_sysfs_scheme_set_quotas()
1994 scheme->quotas = quotas; in damon_sysfs_scheme_set_quotas()
2002 static int damon_sysfs_scheme_set_watermarks(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_watermarks() argument
2011 &damon_sysfs_watermarks_ktype, &scheme->kobj, in damon_sysfs_scheme_set_watermarks()
2016 scheme->watermarks = watermarks; in damon_sysfs_scheme_set_watermarks()
2020 static int damon_sysfs_scheme_set_filters(struct damon_sysfs_scheme *scheme, in damon_sysfs_scheme_set_filters() argument
2031 &damon_sysfs_scheme_filters_ktype, &scheme->kobj, in damon_sysfs_scheme_set_filters()
2040 static int damos_sysfs_set_filter_dirs(struct damon_sysfs_scheme *scheme) in damos_sysfs_set_filter_dirs() argument
2044 err = damon_sysfs_scheme_set_filters(scheme, in damos_sysfs_set_filter_dirs()
2046 &scheme->filters); in damos_sysfs_set_filter_dirs()
2049 err = damon_sysfs_scheme_set_filters(scheme, in damos_sysfs_set_filter_dirs()
2051 &scheme->core_filters); in damos_sysfs_set_filter_dirs()
2054 err = damon_sysfs_scheme_set_filters(scheme, in damos_sysfs_set_filter_dirs()
2056 &scheme->ops_filters); in damos_sysfs_set_filter_dirs()
2062 kobject_put(&scheme->core_filters->kobj); in damos_sysfs_set_filter_dirs()
2063 scheme->core_filters = NULL; in damos_sysfs_set_filter_dirs()
2065 kobject_put(&scheme->filters->kobj); in damos_sysfs_set_filter_dirs()
2066 scheme->filters = NULL; in damos_sysfs_set_filter_dirs()
2070 static int damon_sysfs_scheme_set_stats(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_stats() argument
2078 &scheme->kobj, "stats"); in damon_sysfs_scheme_set_stats()
2082 scheme->stats = stats; in damon_sysfs_scheme_set_stats()
2087 struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_tried_regions() argument
2096 &damon_sysfs_scheme_regions_ktype, &scheme->kobj, in damon_sysfs_scheme_set_tried_regions()
2101 scheme->tried_regions = tried_regions; in damon_sysfs_scheme_set_tried_regions()
2105 static int damon_sysfs_scheme_add_dirs(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_add_dirs() argument
2109 err = damon_sysfs_scheme_set_access_pattern(scheme); in damon_sysfs_scheme_add_dirs()
2112 err = damos_sysfs_set_dests(scheme); in damon_sysfs_scheme_add_dirs()
2115 err = damon_sysfs_scheme_set_quotas(scheme); in damon_sysfs_scheme_add_dirs()
2118 err = damon_sysfs_scheme_set_watermarks(scheme); in damon_sysfs_scheme_add_dirs()
2121 err = damos_sysfs_set_filter_dirs(scheme); in damon_sysfs_scheme_add_dirs()
2124 err = damon_sysfs_scheme_set_stats(scheme); in damon_sysfs_scheme_add_dirs()
2127 err = damon_sysfs_scheme_set_tried_regions(scheme); in damon_sysfs_scheme_add_dirs()
2133 kobject_put(&scheme->tried_regions->kobj); in damon_sysfs_scheme_add_dirs()
2134 scheme->tried_regions = NULL; in damon_sysfs_scheme_add_dirs()
2136 kobject_put(&scheme->ops_filters->kobj); in damon_sysfs_scheme_add_dirs()
2137 scheme->ops_filters = NULL; in damon_sysfs_scheme_add_dirs()
2138 kobject_put(&scheme->core_filters->kobj); in damon_sysfs_scheme_add_dirs()
2139 scheme->core_filters = NULL; in damon_sysfs_scheme_add_dirs()
2140 kobject_put(&scheme->filters->kobj); in damon_sysfs_scheme_add_dirs()
2141 scheme->filters = NULL; in damon_sysfs_scheme_add_dirs()
2143 kobject_put(&scheme->watermarks->kobj); in damon_sysfs_scheme_add_dirs()
2144 scheme->watermarks = NULL; in damon_sysfs_scheme_add_dirs()
2146 kobject_put(&scheme->quotas->kobj); in damon_sysfs_scheme_add_dirs()
2147 scheme->quotas = NULL; in damon_sysfs_scheme_add_dirs()
2149 kobject_put(&scheme->dests->kobj); in damon_sysfs_scheme_add_dirs()
2150 scheme->dests = NULL; in damon_sysfs_scheme_add_dirs()
2152 kobject_put(&scheme->access_pattern->kobj); in damon_sysfs_scheme_add_dirs()
2153 scheme->access_pattern = NULL; in damon_sysfs_scheme_add_dirs()
2157 static void damon_sysfs_scheme_rm_dirs(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_rm_dirs() argument
2159 damon_sysfs_access_pattern_rm_dirs(scheme->access_pattern); in damon_sysfs_scheme_rm_dirs()
2160 kobject_put(&scheme->access_pattern->kobj); in damon_sysfs_scheme_rm_dirs()
2161 kobject_put(&scheme->dests->kobj); in damon_sysfs_scheme_rm_dirs()
2162 damos_sysfs_dests_rm_dirs(scheme->dests); in damon_sysfs_scheme_rm_dirs()
2163 damon_sysfs_quotas_rm_dirs(scheme->quotas); in damon_sysfs_scheme_rm_dirs()
2164 kobject_put(&scheme->quotas->kobj); in damon_sysfs_scheme_rm_dirs()
2165 kobject_put(&scheme->watermarks->kobj); in damon_sysfs_scheme_rm_dirs()
2166 damon_sysfs_scheme_filters_rm_dirs(scheme->filters); in damon_sysfs_scheme_rm_dirs()
2167 kobject_put(&scheme->filters->kobj); in damon_sysfs_scheme_rm_dirs()
2168 damon_sysfs_scheme_filters_rm_dirs(scheme->core_filters); in damon_sysfs_scheme_rm_dirs()
2169 kobject_put(&scheme->core_filters->kobj); in damon_sysfs_scheme_rm_dirs()
2170 damon_sysfs_scheme_filters_rm_dirs(scheme->ops_filters); in damon_sysfs_scheme_rm_dirs()
2171 kobject_put(&scheme->ops_filters->kobj); in damon_sysfs_scheme_rm_dirs()
2172 kobject_put(&scheme->stats->kobj); in damon_sysfs_scheme_rm_dirs()
2173 damon_sysfs_scheme_regions_rm_dirs(scheme->tried_regions); in damon_sysfs_scheme_rm_dirs()
2174 kobject_put(&scheme->tried_regions->kobj); in damon_sysfs_scheme_rm_dirs()
2180 struct damon_sysfs_scheme *scheme = container_of(kobj, in action_show() local
2188 if (action_name->action == scheme->action) in action_show()
2197 struct damon_sysfs_scheme *scheme = container_of(kobj, in action_store() local
2206 scheme->action = action_name->action; in action_store()
2216 struct damon_sysfs_scheme *scheme = container_of(kobj, in apply_interval_us_show() local
2219 return sysfs_emit(buf, "%lu\n", scheme->apply_interval_us); in apply_interval_us_show()
2225 struct damon_sysfs_scheme *scheme = container_of(kobj, in apply_interval_us_store() local
2227 int err = kstrtoul(buf, 0, &scheme->apply_interval_us); in apply_interval_us_store()
2235 struct damon_sysfs_scheme *scheme = container_of(kobj, in target_nid_show() local
2238 return sysfs_emit(buf, "%d\n", scheme->target_nid); in target_nid_show()
2244 struct damon_sysfs_scheme *scheme = container_of(kobj, in target_nid_store() local
2249 err = kstrtoint(buf, 0, &scheme->target_nid); in target_nid_store()
2308 struct damon_sysfs_scheme **schemes_arr, *scheme; in damon_sysfs_schemes_add_dirs() local
2326 scheme = damon_sysfs_scheme_alloc(DAMOS_STAT, 0); in damon_sysfs_schemes_add_dirs()
2327 if (!scheme) { in damon_sysfs_schemes_add_dirs()
2332 err = kobject_init_and_add(&scheme->kobj, in damon_sysfs_schemes_add_dirs()
2337 err = damon_sysfs_scheme_add_dirs(scheme); in damon_sysfs_schemes_add_dirs()
2341 schemes_arr[i] = scheme; in damon_sysfs_schemes_add_dirs()
2348 kobject_put(&scheme->kobj); in damon_sysfs_schemes_add_dirs()
2443 static int damon_sysfs_add_scheme_filters(struct damos *scheme, in damon_sysfs_add_scheme_filters() argument
2485 damos_add_filter(scheme, filter); in damon_sysfs_add_scheme_filters()
2527 struct damos *scheme; in damos_sysfs_set_quota_scores() local
2532 damon_for_each_scheme(scheme, ctx) { in damos_sysfs_set_quota_scores()
2549 err = damos_commit_quota_goals(&scheme->quota, "a); in damos_sysfs_set_quota_scores()
2563 struct damos *scheme; in damos_sysfs_update_effective_quotas() local
2566 damon_for_each_scheme(scheme, ctx) { in damos_sysfs_update_effective_quotas()
2575 sysfs_quotas->effective_sz = scheme->quota.esz; in damos_sysfs_update_effective_quotas()
2579 static int damos_sysfs_add_migrate_dest(struct damos *scheme, in damos_sysfs_add_migrate_dest() argument
2582 struct damos_migrate_dests *dests = &scheme->migrate_dests; in damos_sysfs_add_migrate_dest()
2610 struct damos *scheme; in damon_sysfs_mk_scheme() local
2637 scheme = damon_new_scheme(&pattern, sysfs_scheme->action, in damon_sysfs_mk_scheme()
2640 if (!scheme) in damon_sysfs_mk_scheme()
2643 err = damos_sysfs_add_quota_score(sysfs_quotas->goals, &scheme->quota); in damon_sysfs_mk_scheme()
2645 damon_destroy_scheme(scheme); in damon_sysfs_mk_scheme()
2649 err = damon_sysfs_add_scheme_filters(scheme, sysfs_scheme->core_filters); in damon_sysfs_mk_scheme()
2651 damon_destroy_scheme(scheme); in damon_sysfs_mk_scheme()
2654 err = damon_sysfs_add_scheme_filters(scheme, sysfs_scheme->ops_filters); in damon_sysfs_mk_scheme()
2656 damon_destroy_scheme(scheme); in damon_sysfs_mk_scheme()
2659 err = damon_sysfs_add_scheme_filters(scheme, sysfs_scheme->filters); in damon_sysfs_mk_scheme()
2661 damon_destroy_scheme(scheme); in damon_sysfs_mk_scheme()
2664 err = damos_sysfs_add_migrate_dest(scheme, sysfs_scheme->dests); in damon_sysfs_mk_scheme()
2666 damon_destroy_scheme(scheme); in damon_sysfs_mk_scheme()
2669 return scheme; in damon_sysfs_mk_scheme()
2678 struct damos *scheme, *next; in damon_sysfs_add_schemes() local
2680 scheme = damon_sysfs_mk_scheme(sysfs_schemes->schemes_arr[i]); in damon_sysfs_add_schemes()
2681 if (!scheme) { in damon_sysfs_add_schemes()
2682 damon_for_each_scheme_safe(scheme, next, ctx) in damon_sysfs_add_schemes()
2683 damon_destroy_scheme(scheme); in damon_sysfs_add_schemes()
2686 damon_add_scheme(ctx, scheme); in damon_sysfs_add_schemes()
2695 struct damos *scheme; in damon_sysfs_schemes_update_stats() local
2698 damon_for_each_scheme(scheme, ctx) { in damon_sysfs_schemes_update_stats()
2706 sysfs_stats->nr_tried = scheme->stat.nr_tried; in damon_sysfs_schemes_update_stats()
2707 sysfs_stats->sz_tried = scheme->stat.sz_tried; in damon_sysfs_schemes_update_stats()
2708 sysfs_stats->nr_applied = scheme->stat.nr_applied; in damon_sysfs_schemes_update_stats()
2709 sysfs_stats->sz_applied = scheme->stat.sz_applied; in damon_sysfs_schemes_update_stats()
2711 scheme->stat.sz_ops_filter_passed; in damon_sysfs_schemes_update_stats()
2712 sysfs_stats->qt_exceeds = scheme->stat.qt_exceeds; in damon_sysfs_schemes_update_stats()
2733 struct damos *scheme; in damos_sysfs_populate_region_dir() local
2738 damon_for_each_scheme(scheme, ctx) { in damos_sysfs_populate_region_dir()
2739 if (scheme == s) in damos_sysfs_populate_region_dir()