• Home
  • Raw
  • Download

Lines Matching full:scheme

13  * scheme region directory
113 * scheme regions directory
780 * scheme/weights directory
1121 * scheme directory
1150 struct damon_sysfs_scheme *scheme = kmalloc(sizeof(*scheme), in damon_sysfs_scheme_alloc() local
1153 if (!scheme) in damon_sysfs_scheme_alloc()
1155 scheme->kobj = (struct kobject){}; in damon_sysfs_scheme_alloc()
1156 scheme->action = action; in damon_sysfs_scheme_alloc()
1157 return scheme; in damon_sysfs_scheme_alloc()
1161 struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_access_pattern() argument
1170 &damon_sysfs_access_pattern_ktype, &scheme->kobj, in damon_sysfs_scheme_set_access_pattern()
1177 scheme->access_pattern = access_pattern; in damon_sysfs_scheme_set_access_pattern()
1185 static int damon_sysfs_scheme_set_quotas(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_quotas() argument
1193 &scheme->kobj, "quotas"); in damon_sysfs_scheme_set_quotas()
1199 scheme->quotas = quotas; in damon_sysfs_scheme_set_quotas()
1207 static int damon_sysfs_scheme_set_watermarks(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_watermarks() argument
1216 &damon_sysfs_watermarks_ktype, &scheme->kobj, in damon_sysfs_scheme_set_watermarks()
1221 scheme->watermarks = watermarks; in damon_sysfs_scheme_set_watermarks()
1225 static int damon_sysfs_scheme_set_filters(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_filters() argument
1234 &damon_sysfs_scheme_filters_ktype, &scheme->kobj, in damon_sysfs_scheme_set_filters()
1239 scheme->filters = filters; in damon_sysfs_scheme_set_filters()
1243 static int damon_sysfs_scheme_set_stats(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_stats() argument
1251 &scheme->kobj, "stats"); in damon_sysfs_scheme_set_stats()
1255 scheme->stats = stats; in damon_sysfs_scheme_set_stats()
1260 struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_set_tried_regions() argument
1269 &damon_sysfs_scheme_regions_ktype, &scheme->kobj, in damon_sysfs_scheme_set_tried_regions()
1274 scheme->tried_regions = tried_regions; in damon_sysfs_scheme_set_tried_regions()
1278 static int damon_sysfs_scheme_add_dirs(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_add_dirs() argument
1282 err = damon_sysfs_scheme_set_access_pattern(scheme); in damon_sysfs_scheme_add_dirs()
1285 err = damon_sysfs_scheme_set_quotas(scheme); in damon_sysfs_scheme_add_dirs()
1288 err = damon_sysfs_scheme_set_watermarks(scheme); in damon_sysfs_scheme_add_dirs()
1291 err = damon_sysfs_scheme_set_filters(scheme); in damon_sysfs_scheme_add_dirs()
1294 err = damon_sysfs_scheme_set_stats(scheme); in damon_sysfs_scheme_add_dirs()
1297 err = damon_sysfs_scheme_set_tried_regions(scheme); in damon_sysfs_scheme_add_dirs()
1303 kobject_put(&scheme->tried_regions->kobj); in damon_sysfs_scheme_add_dirs()
1304 scheme->tried_regions = NULL; in damon_sysfs_scheme_add_dirs()
1306 kobject_put(&scheme->filters->kobj); in damon_sysfs_scheme_add_dirs()
1307 scheme->filters = NULL; in damon_sysfs_scheme_add_dirs()
1309 kobject_put(&scheme->watermarks->kobj); in damon_sysfs_scheme_add_dirs()
1310 scheme->watermarks = NULL; in damon_sysfs_scheme_add_dirs()
1312 kobject_put(&scheme->quotas->kobj); in damon_sysfs_scheme_add_dirs()
1313 scheme->quotas = NULL; in damon_sysfs_scheme_add_dirs()
1315 kobject_put(&scheme->access_pattern->kobj); in damon_sysfs_scheme_add_dirs()
1316 scheme->access_pattern = NULL; in damon_sysfs_scheme_add_dirs()
1320 static void damon_sysfs_scheme_rm_dirs(struct damon_sysfs_scheme *scheme) in damon_sysfs_scheme_rm_dirs() argument
1322 damon_sysfs_access_pattern_rm_dirs(scheme->access_pattern); in damon_sysfs_scheme_rm_dirs()
1323 kobject_put(&scheme->access_pattern->kobj); in damon_sysfs_scheme_rm_dirs()
1324 damon_sysfs_quotas_rm_dirs(scheme->quotas); in damon_sysfs_scheme_rm_dirs()
1325 kobject_put(&scheme->quotas->kobj); in damon_sysfs_scheme_rm_dirs()
1326 kobject_put(&scheme->watermarks->kobj); in damon_sysfs_scheme_rm_dirs()
1327 damon_sysfs_scheme_filters_rm_dirs(scheme->filters); in damon_sysfs_scheme_rm_dirs()
1328 kobject_put(&scheme->filters->kobj); in damon_sysfs_scheme_rm_dirs()
1329 kobject_put(&scheme->stats->kobj); in damon_sysfs_scheme_rm_dirs()
1330 damon_sysfs_scheme_regions_rm_dirs(scheme->tried_regions); in damon_sysfs_scheme_rm_dirs()
1331 kobject_put(&scheme->tried_regions->kobj); in damon_sysfs_scheme_rm_dirs()
1337 struct damon_sysfs_scheme *scheme = container_of(kobj, in action_show() local
1341 damon_sysfs_damos_action_strs[scheme->action]); in action_show()
1347 struct damon_sysfs_scheme *scheme = container_of(kobj, in action_store() local
1353 scheme->action = action; in action_store()
1406 struct damon_sysfs_scheme **schemes_arr, *scheme; in damon_sysfs_schemes_add_dirs() local
1420 scheme = damon_sysfs_scheme_alloc(DAMOS_STAT); in damon_sysfs_schemes_add_dirs()
1421 if (!scheme) { in damon_sysfs_schemes_add_dirs()
1426 err = kobject_init_and_add(&scheme->kobj, in damon_sysfs_schemes_add_dirs()
1431 err = damon_sysfs_scheme_add_dirs(scheme); in damon_sysfs_schemes_add_dirs()
1435 schemes_arr[i] = scheme; in damon_sysfs_schemes_add_dirs()
1442 kobject_put(&scheme->kobj); in damon_sysfs_schemes_add_dirs()
1537 static int damon_sysfs_set_scheme_filters(struct damos *scheme, in damon_sysfs_set_scheme_filters() argument
1543 damos_for_each_filter_safe(filter, next, scheme) in damon_sysfs_set_scheme_filters()
1575 damos_add_filter(scheme, filter); in damon_sysfs_set_scheme_filters()
1590 struct damos *scheme; in damon_sysfs_mk_scheme() local
1617 scheme = damon_new_scheme(&pattern, sysfs_scheme->action, 0, &quota, in damon_sysfs_mk_scheme()
1619 if (!scheme) in damon_sysfs_mk_scheme()
1622 err = damon_sysfs_set_scheme_filters(scheme, sysfs_filters); in damon_sysfs_mk_scheme()
1624 damon_destroy_scheme(scheme); in damon_sysfs_mk_scheme()
1627 return scheme; in damon_sysfs_mk_scheme()
1630 static void damon_sysfs_update_scheme(struct damos *scheme, in damon_sysfs_update_scheme() argument
1640 scheme->pattern.min_sz_region = access_pattern->sz->min; in damon_sysfs_update_scheme()
1641 scheme->pattern.max_sz_region = access_pattern->sz->max; in damon_sysfs_update_scheme()
1642 scheme->pattern.min_nr_accesses = access_pattern->nr_accesses->min; in damon_sysfs_update_scheme()
1643 scheme->pattern.max_nr_accesses = access_pattern->nr_accesses->max; in damon_sysfs_update_scheme()
1644 scheme->pattern.min_age_region = access_pattern->age->min; in damon_sysfs_update_scheme()
1645 scheme->pattern.max_age_region = access_pattern->age->max; in damon_sysfs_update_scheme()
1647 scheme->action = sysfs_scheme->action; in damon_sysfs_update_scheme()
1649 scheme->quota.ms = sysfs_quotas->ms; in damon_sysfs_update_scheme()
1650 scheme->quota.sz = sysfs_quotas->sz; in damon_sysfs_update_scheme()
1651 scheme->quota.reset_interval = sysfs_quotas->reset_interval_ms; in damon_sysfs_update_scheme()
1652 scheme->quota.weight_sz = sysfs_weights->sz; in damon_sysfs_update_scheme()
1653 scheme->quota.weight_nr_accesses = sysfs_weights->nr_accesses; in damon_sysfs_update_scheme()
1654 scheme->quota.weight_age = sysfs_weights->age; in damon_sysfs_update_scheme()
1656 scheme->wmarks.metric = sysfs_wmarks->metric; in damon_sysfs_update_scheme()
1657 scheme->wmarks.interval = sysfs_wmarks->interval_us; in damon_sysfs_update_scheme()
1658 scheme->wmarks.high = sysfs_wmarks->high; in damon_sysfs_update_scheme()
1659 scheme->wmarks.mid = sysfs_wmarks->mid; in damon_sysfs_update_scheme()
1660 scheme->wmarks.low = sysfs_wmarks->low; in damon_sysfs_update_scheme()
1662 err = damon_sysfs_set_scheme_filters(scheme, sysfs_scheme->filters); in damon_sysfs_update_scheme()
1664 damon_destroy_scheme(scheme); in damon_sysfs_update_scheme()
1670 struct damos *scheme, *next; in damon_sysfs_set_schemes() local
1673 damon_for_each_scheme_safe(scheme, next, ctx) { in damon_sysfs_set_schemes()
1675 damon_sysfs_update_scheme(scheme, in damon_sysfs_set_schemes()
1678 damon_destroy_scheme(scheme); in damon_sysfs_set_schemes()
1683 struct damos *scheme, *next; in damon_sysfs_set_schemes() local
1685 scheme = damon_sysfs_mk_scheme(sysfs_schemes->schemes_arr[i]); in damon_sysfs_set_schemes()
1686 if (!scheme) { in damon_sysfs_set_schemes()
1687 damon_for_each_scheme_safe(scheme, next, ctx) in damon_sysfs_set_schemes()
1688 damon_destroy_scheme(scheme); in damon_sysfs_set_schemes()
1691 damon_add_scheme(ctx, scheme); in damon_sysfs_set_schemes()
1700 struct damos *scheme; in damon_sysfs_schemes_update_stats() local
1703 damon_for_each_scheme(scheme, ctx) { in damon_sysfs_schemes_update_stats()
1706 /* user could have removed the scheme sysfs dir */ in damon_sysfs_schemes_update_stats()
1711 sysfs_stats->nr_tried = scheme->stat.nr_tried; in damon_sysfs_schemes_update_stats()
1712 sysfs_stats->sz_tried = scheme->stat.sz_tried; in damon_sysfs_schemes_update_stats()
1713 sysfs_stats->nr_applied = scheme->stat.nr_applied; in damon_sysfs_schemes_update_stats()
1714 sysfs_stats->sz_applied = scheme->stat.sz_applied; in damon_sysfs_schemes_update_stats()
1715 sysfs_stats->qt_exceeds = scheme->stat.qt_exceeds; in damon_sysfs_schemes_update_stats()
1736 struct damos *scheme; in damon_sysfs_before_damos_apply() local
1743 damon_for_each_scheme(scheme, ctx) { in damon_sysfs_before_damos_apply()
1744 if (scheme == s) in damon_sysfs_before_damos_apply()
1749 /* user could have removed the scheme sysfs dir */ in damon_sysfs_before_damos_apply()
1777 struct damos *scheme; in damon_sysfs_schemes_clear_regions() local
1780 damon_for_each_scheme(scheme, ctx) { in damon_sysfs_schemes_clear_regions()
1783 /* user could have removed the scheme sysfs dir */ in damon_sysfs_schemes_clear_regions()