u64 last_psi_total;
struct {
int nid;
- unsigned short memcg_id;
+ u64 memcg_id;
};
};
struct list_head list;
bool matching;
bool allow;
union {
- unsigned short memcg_id;
+ u64 memcg_id;
struct damon_addr_range addr_range;
int target_idx;
struct damon_size_range sz_range;
unsigned long used_pages, numerator;
struct sysinfo i;
- rcu_read_lock();
- memcg = mem_cgroup_from_id(goal->memcg_id);
- if (!memcg || !mem_cgroup_tryget(memcg)) {
- rcu_read_unlock();
+ memcg = mem_cgroup_get_from_ino(goal->memcg_id);
+ if (!memcg) {
if (goal->metric == DAMOS_QUOTA_NODE_MEMCG_USED_BP)
return 0;
else /* DAMOS_QUOTA_NODE_MEMCG_FREE_BP */
return 10000;
}
- rcu_read_unlock();
mem_cgroup_flush_stats(memcg);
lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(goal->nid));
if (!memcg)
matched = false;
else
- matched = filter->memcg_id == mem_cgroup_id(memcg);
+ matched = filter->memcg_id == mem_cgroup_ino(memcg);
rcu_read_unlock();
break;
case DAMOS_FILTER_TYPE_YOUNG:
return false;
}
-static int damon_sysfs_memcg_path_to_id(char *memcg_path, unsigned short *id)
+static int damon_sysfs_memcg_path_to_id(char *memcg_path, u64 *id)
{
struct mem_cgroup *memcg;
char *path;
for (memcg = mem_cgroup_iter(NULL, NULL, NULL); memcg;
memcg = mem_cgroup_iter(NULL, memcg, NULL)) {
- /* skip removed memcg */
- if (!mem_cgroup_id(memcg))
+ /* skip offlined memcg */
+ if (!mem_cgroup_online(memcg))
continue;
if (damon_sysfs_memcg_path_eq(memcg, path, memcg_path)) {
- *id = mem_cgroup_id(memcg);
+ *id = mem_cgroup_ino(memcg);
found = true;
break;
}