Messages in this thread | | | Date | Wed, 09 Dec 2009 13:04:06 +0800 | From | Li Zefan <> | Subject | Re: [PATCH] [23/31] HWPOISON: add memory cgroup filter |
| |
> +#ifdef CONFIG_CGROUP_MEM_RES_CTLR_SWAP > +u64 hwpoison_filter_memcg; > +EXPORT_SYMBOL_GPL(hwpoison_filter_memcg); > +static int hwpoison_filter_task(struct page *p) > +{ > + struct mem_cgroup *mem; > + struct cgroup_subsys_state *css; > + unsigned long ino; > + > + if (!hwpoison_filter_memcg) > + return 0; > + > + mem = try_get_mem_cgroup_from_page(p); > + if (!mem) > + return -EINVAL; > + > + css = mem_cgroup_css(mem); > + ino = css->cgroup->dentry->d_inode->i_ino;
I have a question, can try_get_mem_cgroup_from_page() return root_mem_cgroup?
if it can, then css->cgroup->dentry is NULL, if memcg is not mounted and there is no subdir in memcg. Because the root cgroup of an inactive subsystem has no dentry.
> + css_put(css); > + > + if (ino != hwpoison_filter_memcg) > + return -EINVAL; > + > + return 0; > +} > +#else > +static int hwpoison_filter_task(struct page *p) { return 0; } > +#endif
| |