| Date | Mon, 18 May 2015 17:35:16 +0200 | From | Vlastimil Babka <> | Subject | Re: [PATCHv5 20/28] mm: differentiate page_mapped() from page_mapcount() for compound pages |
| |
On 04/23/2015 11:03 PM, Kirill A. Shutemov wrote: > Let's define page_mapped() to be true for compound pages if any > sub-pages of the compound page is mapped (with PMD or PTE). > > On other hand page_mapcount() return mapcount for this particular small > page. > > This will make cases like page_get_anon_vma() behave correctly once we > allow huge pages to be mapped with PTE. > > Most users outside core-mm should use page_mapcount() instead of > page_mapped().
Does "should" mean that they do that now, or just that you would like them to? Should there be a warning before the function then?
> > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> > Tested-by: Sasha Levin <sasha.levin@oracle.com>
> --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -909,7 +909,16 @@ static inline pgoff_t page_file_index(struct page *page)
(not shown in the diff)
* Return true if this page is mapped into pagetables. > */
Expand the comment? Especially if you put compound_head() there.
> static inline int page_mapped(struct page *page)
Convert to proper bool while at it?
> { > - return atomic_read(&(page)->_mapcount) + compound_mapcount(page) >= 0; > + int i; > + if (likely(!PageCompound(page))) > + return atomic_read(&page->_mapcount) >= 0; > + if (compound_mapcount(page)) > + return 1; > + for (i = 0; i < hpage_nr_pages(page); i++) { > + if (atomic_read(&page[i]._mapcount) >= 0) > + return 1; > + } > + return 0; > } > > /*
|