On Wed, 19 Jan 2011 13:10:43 +0100 Johannes Weiner <hannes@xxxxxxxxxxx> wrote: > Hello KAMEZAWA-san, > > On Tue, Jan 18, 2011 at 11:40:49AM +0900, KAMEZAWA Hiroyuki wrote: > > +void mem_cgroup_split_huge_fixup(struct page *head, struct page *tail) > > +{ > > + struct page_cgroup *head_pc = lookup_page_cgroup(head); > > + struct page_cgroup *tail_pc = lookup_page_cgroup(tail); > > + unsigned long flags; > > + > > + /* > > + * We have no races witch charge/uncharge but will have races with > > + * page state accounting. > > + */ > > + move_lock_page_cgroup(head_pc, &flags); > > + > > + tail_pc->mem_cgroup = head_pc->mem_cgroup; > > + smp_wmb(); /* see __commit_charge() */ > > I thought the barriers were needed because charging does not hold the > lru lock. But here we do, and all the 'lockless' read-sides do so as > well. Am I missing something or can this barrier be removed? > Hmm. I think this can be removed. But it's just because there is only one referer of lockless access to pc->mem_cgroup. I think it's ok to remove this but it should be done by independent patch with enough patch clarification. IOW, I'll do later in another patch. Thanks, -Kame -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>