Lines Matching full:scheme
391 * scheme/weights directory
732 * scheme directory
759 struct damon_sysfs_scheme *scheme = kmalloc(sizeof(*scheme), in damon_sysfs_scheme_alloc() local
762 if (!scheme) in damon_sysfs_scheme_alloc()
764 scheme->kobj = (struct kobject){}; in damon_sysfs_scheme_alloc()
765 scheme->action = action; in damon_sysfs_scheme_alloc()
766 return scheme; in damon_sysfs_scheme_alloc()
770 struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_access_pattern() argument
779 &damon_sysfs_access_pattern_ktype, &scheme->kobj, in damon_sysfs_scheme_set_access_pattern()
786 scheme->access_pattern = access_pattern; in damon_sysfs_scheme_set_access_pattern()
794 static int damon_sysfs_scheme_set_quotas(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_quotas() argument
802 &scheme->kobj, "quotas"); in damon_sysfs_scheme_set_quotas()
808 scheme->quotas = quotas; in damon_sysfs_scheme_set_quotas()
816 static int damon_sysfs_scheme_set_watermarks(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_watermarks() argument
825 &damon_sysfs_watermarks_ktype, &scheme->kobj, in damon_sysfs_scheme_set_watermarks()
830 scheme->watermarks = watermarks; in damon_sysfs_scheme_set_watermarks()
834 static int damon_sysfs_scheme_set_stats(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_stats() argument
842 &scheme->kobj, "stats"); in damon_sysfs_scheme_set_stats()
846 scheme->stats = stats; in damon_sysfs_scheme_set_stats()
850 static int damon_sysfs_scheme_add_dirs(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_add_dirs() argument
854 err = damon_sysfs_scheme_set_access_pattern(scheme); in damon_sysfs_scheme_add_dirs()
857 err = damon_sysfs_scheme_set_quotas(scheme); in damon_sysfs_scheme_add_dirs()
860 err = damon_sysfs_scheme_set_watermarks(scheme); in damon_sysfs_scheme_add_dirs()
863 err = damon_sysfs_scheme_set_stats(scheme); in damon_sysfs_scheme_add_dirs()
869 kobject_put(&scheme->watermarks->kobj); in damon_sysfs_scheme_add_dirs()
870 scheme->watermarks = NULL; in damon_sysfs_scheme_add_dirs()
872 kobject_put(&scheme->quotas->kobj); in damon_sysfs_scheme_add_dirs()
873 scheme->quotas = NULL; in damon_sysfs_scheme_add_dirs()
875 kobject_put(&scheme->access_pattern->kobj); in damon_sysfs_scheme_add_dirs()
876 scheme->access_pattern = NULL; in damon_sysfs_scheme_add_dirs()
880 static void damon_sysfs_scheme_rm_dirs(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_rm_dirs() argument
882 damon_sysfs_access_pattern_rm_dirs(scheme->access_pattern); in damon_sysfs_scheme_rm_dirs()
883 kobject_put(&scheme->access_pattern->kobj); in damon_sysfs_scheme_rm_dirs()
884 damon_sysfs_quotas_rm_dirs(scheme->quotas); in damon_sysfs_scheme_rm_dirs()
885 kobject_put(&scheme->quotas->kobj); in damon_sysfs_scheme_rm_dirs()
886 kobject_put(&scheme->watermarks->kobj); in damon_sysfs_scheme_rm_dirs()
887 kobject_put(&scheme->stats->kobj); in damon_sysfs_scheme_rm_dirs()
893 struct damon_sysfs_scheme *scheme = container_of(kobj, in action_show() local
897 damon_sysfs_damos_action_strs[scheme->action]); in action_show()
903 struct damon_sysfs_scheme *scheme = container_of(kobj, in action_store() local
909 scheme->action = action; in action_store()
968 struct damon_sysfs_scheme **schemes_arr, *scheme; in damon_sysfs_schemes_add_dirs() local
982 scheme = damon_sysfs_scheme_alloc(DAMOS_STAT); in damon_sysfs_schemes_add_dirs()
983 if (!scheme) { in damon_sysfs_schemes_add_dirs()
988 err = kobject_init_and_add(&scheme->kobj, in damon_sysfs_schemes_add_dirs()
993 err = damon_sysfs_scheme_add_dirs(scheme); in damon_sysfs_schemes_add_dirs()
997 schemes_arr[i] = scheme; in damon_sysfs_schemes_add_dirs()
1004 kobject_put(&scheme->kobj); in damon_sysfs_schemes_add_dirs()
2054 * @DAMON_SYSFS_CMD_UPDATE_SCHEMES_STATS: Update scheme stats sysfs
2286 static void damon_sysfs_update_scheme(struct damos *scheme, in damon_sysfs_update_scheme() argument
2295 scheme->pattern.min_sz_region = access_pattern->sz->min; in damon_sysfs_update_scheme()
2296 scheme->pattern.max_sz_region = access_pattern->sz->max; in damon_sysfs_update_scheme()
2297 scheme->pattern.min_nr_accesses = access_pattern->nr_accesses->min; in damon_sysfs_update_scheme()
2298 scheme->pattern.max_nr_accesses = access_pattern->nr_accesses->max; in damon_sysfs_update_scheme()
2299 scheme->pattern.min_age_region = access_pattern->age->min; in damon_sysfs_update_scheme()
2300 scheme->pattern.max_age_region = access_pattern->age->max; in damon_sysfs_update_scheme()
2302 scheme->action = sysfs_scheme->action; in damon_sysfs_update_scheme()
2304 scheme->quota.ms = sysfs_quotas->ms; in damon_sysfs_update_scheme()
2305 scheme->quota.sz = sysfs_quotas->sz; in damon_sysfs_update_scheme()
2306 scheme->quota.reset_interval = sysfs_quotas->reset_interval_ms; in damon_sysfs_update_scheme()
2307 scheme->quota.weight_sz = sysfs_weights->sz; in damon_sysfs_update_scheme()
2308 scheme->quota.weight_nr_accesses = sysfs_weights->nr_accesses; in damon_sysfs_update_scheme()
2309 scheme->quota.weight_age = sysfs_weights->age; in damon_sysfs_update_scheme()
2311 scheme->wmarks.metric = sysfs_wmarks->metric; in damon_sysfs_update_scheme()
2312 scheme->wmarks.interval = sysfs_wmarks->interval_us; in damon_sysfs_update_scheme()
2313 scheme->wmarks.high = sysfs_wmarks->high; in damon_sysfs_update_scheme()
2314 scheme->wmarks.mid = sysfs_wmarks->mid; in damon_sysfs_update_scheme()
2315 scheme->wmarks.low = sysfs_wmarks->low; in damon_sysfs_update_scheme()
2321 struct damos *scheme, *next; in damon_sysfs_set_schemes() local
2324 damon_for_each_scheme_safe(scheme, next, ctx) { in damon_sysfs_set_schemes()
2326 damon_sysfs_update_scheme(scheme, in damon_sysfs_set_schemes()
2329 damon_destroy_scheme(scheme); in damon_sysfs_set_schemes()
2334 struct damos *scheme, *next; in damon_sysfs_set_schemes() local
2336 scheme = damon_sysfs_mk_scheme(sysfs_schemes->schemes_arr[i]); in damon_sysfs_set_schemes()
2337 if (!scheme) { in damon_sysfs_set_schemes()
2338 damon_for_each_scheme_safe(scheme, next, ctx) in damon_sysfs_set_schemes()
2339 damon_destroy_scheme(scheme); in damon_sysfs_set_schemes()
2342 damon_add_scheme(ctx, scheme); in damon_sysfs_set_schemes()
2375 struct damos *scheme; in damon_sysfs_upd_schemes_stats() local
2381 damon_for_each_scheme(scheme, ctx) { in damon_sysfs_upd_schemes_stats()
2384 /* user could have removed the scheme sysfs dir */ in damon_sysfs_upd_schemes_stats()
2389 sysfs_stats->nr_tried = scheme->stat.nr_tried; in damon_sysfs_upd_schemes_stats()
2390 sysfs_stats->sz_tried = scheme->stat.sz_tried; in damon_sysfs_upd_schemes_stats()
2391 sysfs_stats->nr_applied = scheme->stat.nr_applied; in damon_sysfs_upd_schemes_stats()
2392 sysfs_stats->sz_applied = scheme->stat.sz_applied; in damon_sysfs_upd_schemes_stats()
2393 sysfs_stats->qt_exceeds = scheme->stat.qt_exceeds; in damon_sysfs_upd_schemes_stats()