Lines Matching refs:scheme

13  * scheme region directory
113 * scheme regions directory
779 * scheme/weights directory
1120 * scheme directory
1149 struct damon_sysfs_scheme *scheme = kmalloc(sizeof(*scheme),
1152 if (!scheme)
1154 scheme->kobj = (struct kobject){};
1155 scheme->action = action;
1156 return scheme;
1160 struct damon_sysfs_scheme *scheme)
1169 &damon_sysfs_access_pattern_ktype, &scheme->kobj,
1176 scheme->access_pattern = access_pattern;
1184 static int damon_sysfs_scheme_set_quotas(struct damon_sysfs_scheme *scheme)
1192 &scheme->kobj, "quotas");
1198 scheme->quotas = quotas;
1206 static int damon_sysfs_scheme_set_watermarks(struct damon_sysfs_scheme *scheme)
1215 &damon_sysfs_watermarks_ktype, &scheme->kobj,
1220 scheme->watermarks = watermarks;
1224 static int damon_sysfs_scheme_set_filters(struct damon_sysfs_scheme *scheme)
1233 &damon_sysfs_scheme_filters_ktype, &scheme->kobj,
1238 scheme->filters = filters;
1242 static int damon_sysfs_scheme_set_stats(struct damon_sysfs_scheme *scheme)
1250 &scheme->kobj, "stats");
1254 scheme->stats = stats;
1259 struct damon_sysfs_scheme *scheme)
1268 &damon_sysfs_scheme_regions_ktype, &scheme->kobj,
1273 scheme->tried_regions = tried_regions;
1277 static int damon_sysfs_scheme_add_dirs(struct damon_sysfs_scheme *scheme)
1281 err = damon_sysfs_scheme_set_access_pattern(scheme);
1284 err = damon_sysfs_scheme_set_quotas(scheme);
1287 err = damon_sysfs_scheme_set_watermarks(scheme);
1290 err = damon_sysfs_scheme_set_filters(scheme);
1293 err = damon_sysfs_scheme_set_stats(scheme);
1296 err = damon_sysfs_scheme_set_tried_regions(scheme);
1302 kobject_put(&scheme->tried_regions->kobj);
1303 scheme->tried_regions = NULL;
1305 kobject_put(&scheme->filters->kobj);
1306 scheme->filters = NULL;
1308 kobject_put(&scheme->watermarks->kobj);
1309 scheme->watermarks = NULL;
1311 kobject_put(&scheme->quotas->kobj);
1312 scheme->quotas = NULL;
1314 kobject_put(&scheme->access_pattern->kobj);
1315 scheme->access_pattern = NULL;
1319 static void damon_sysfs_scheme_rm_dirs(struct damon_sysfs_scheme *scheme)
1321 damon_sysfs_access_pattern_rm_dirs(scheme->access_pattern);
1322 kobject_put(&scheme->access_pattern->kobj);
1323 damon_sysfs_quotas_rm_dirs(scheme->quotas);
1324 kobject_put(&scheme->quotas->kobj);
1325 kobject_put(&scheme->watermarks->kobj);
1326 damon_sysfs_scheme_filters_rm_dirs(scheme->filters);
1327 kobject_put(&scheme->filters->kobj);
1328 kobject_put(&scheme->stats->kobj);
1329 damon_sysfs_scheme_regions_rm_dirs(scheme->tried_regions);
1330 kobject_put(&scheme->tried_regions->kobj);
1336 struct damon_sysfs_scheme *scheme = container_of(kobj,
1340 damon_sysfs_damos_action_strs[scheme->action]);
1346 struct damon_sysfs_scheme *scheme = container_of(kobj,
1352 scheme->action = action;
1405 struct damon_sysfs_scheme **schemes_arr, *scheme;
1419 scheme = damon_sysfs_scheme_alloc(DAMOS_STAT);
1420 if (!scheme) {
1425 err = kobject_init_and_add(&scheme->kobj,
1430 err = damon_sysfs_scheme_add_dirs(scheme);
1434 schemes_arr[i] = scheme;
1441 kobject_put(&scheme->kobj);
1536 static int damon_sysfs_set_scheme_filters(struct damos *scheme,
1542 damos_for_each_filter_safe(filter, next, scheme)
1574 damos_add_filter(scheme, filter);
1589 struct damos *scheme;
1616 scheme = damon_new_scheme(&pattern, sysfs_scheme->action, &quota,
1618 if (!scheme)
1621 err = damon_sysfs_set_scheme_filters(scheme, sysfs_filters);
1623 damon_destroy_scheme(scheme);
1626 return scheme;
1629 static void damon_sysfs_update_scheme(struct damos *scheme,
1639 scheme->pattern.min_sz_region = access_pattern->sz->min;
1640 scheme->pattern.max_sz_region = access_pattern->sz->max;
1641 scheme->pattern.min_nr_accesses = access_pattern->nr_accesses->min;
1642 scheme->pattern.max_nr_accesses = access_pattern->nr_accesses->max;
1643 scheme->pattern.min_age_region = access_pattern->age->min;
1644 scheme->pattern.max_age_region = access_pattern->age->max;
1646 scheme->action = sysfs_scheme->action;
1648 scheme->quota.ms = sysfs_quotas->ms;
1649 scheme->quota.sz = sysfs_quotas->sz;
1650 scheme->quota.reset_interval = sysfs_quotas->reset_interval_ms;
1651 scheme->quota.weight_sz = sysfs_weights->sz;
1652 scheme->quota.weight_nr_accesses = sysfs_weights->nr_accesses;
1653 scheme->quota.weight_age = sysfs_weights->age;
1655 scheme->wmarks.metric = sysfs_wmarks->metric;
1656 scheme->wmarks.interval = sysfs_wmarks->interval_us;
1657 scheme->wmarks.high = sysfs_wmarks->high;
1658 scheme->wmarks.mid = sysfs_wmarks->mid;
1659 scheme->wmarks.low = sysfs_wmarks->low;
1661 err = damon_sysfs_set_scheme_filters(scheme, sysfs_scheme->filters);
1663 damon_destroy_scheme(scheme);
1669 struct damos *scheme, *next;
1672 damon_for_each_scheme_safe(scheme, next, ctx) {
1674 damon_sysfs_update_scheme(scheme,
1677 damon_destroy_scheme(scheme);
1682 struct damos *scheme, *next;
1684 scheme = damon_sysfs_mk_scheme(sysfs_schemes->schemes_arr[i]);
1685 if (!scheme) {
1686 damon_for_each_scheme_safe(scheme, next, ctx)
1687 damon_destroy_scheme(scheme);
1690 damon_add_scheme(ctx, scheme);
1699 struct damos *scheme;
1702 damon_for_each_scheme(scheme, ctx) {
1705 /* user could have removed the scheme sysfs dir */
1710 sysfs_stats->nr_tried = scheme->stat.nr_tried;
1711 sysfs_stats->sz_tried = scheme->stat.sz_tried;
1712 sysfs_stats->nr_applied = scheme->stat.nr_applied;
1713 sysfs_stats->sz_applied = scheme->stat.sz_applied;
1714 sysfs_stats->qt_exceeds = scheme->stat.qt_exceeds;
1735 struct damos *scheme;
1742 damon_for_each_scheme(scheme, ctx) {
1743 if (scheme == s)
1748 /* user could have removed the scheme sysfs dir */
1776 struct damos *scheme;
1779 damon_for_each_scheme(scheme, ctx) {
1782 /* user could have removed the scheme sysfs dir */