Re: [PATCHv5 19/28] mm: store mapcount for compound page separately
From: Vlastimil Babka
Date: Tue May 19 2015 - 05:01:51 EST
On 05/19/2015 05:55 AM, Kirill A. Shutemov wrote:
+ if (compound_mapcount(page))
+ ret += compound_mapcount(page) - 1;
This looks like it could uselessly duplicate-inline the code for
compound_mapcount(). It has atomics and smp_rmb() so I'm not sure if the
compiler can just "squash it".
Good point. I'll rework this.
Hm BTW I think same duplication of compound_head() happens in
lock_page(), where it's done by trylock_page() and then __lock_page(),
which is also in different compilation unit to make things worse.
I can imagine it's solvable by introducing variants of __lock_page* that
expect to be already given a head page... if it's worth the trouble.
On the other hand, a simple atomic read that was page_mapcount() has turned
into multiple atomic reads and flag checks. What about the stability of the
whole result? Are all callers ok? (maybe a later page deals with it).
Urghh.. I'll look into this.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/