Re: [PATCH] mm: get page_cache_get_speculative() work on tail pages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 01, 2015 at 05:08:53PM -0700, Hugh Dickins wrote:
> On Thu, 2 Apr 2015, Kirill A. Shutemov wrote:
> > On Wed, Apr 01, 2015 at 04:21:30PM -0700, Hugh Dickins wrote:
> > > On Thu, 2 Apr 2015, Kirill A. Shutemov wrote:
> > > 
> > > > Generic RCU fast GUP rely on page_cache_get_speculative() to obtain pin
> > > > on pte-mapped page.  As pointed by Aneesh during review of my compound
> > > > pages refcounting rework, page_cache_get_speculative() would fail on
> > > > pte-mapped tail page, since tail pages always have page->_count == 0.
> > > > 
> > > > That means we would never be able to successfully obtain pin on
> > > > pte-mapped tail page via generic RCU fast GUP.
> > > > 
> > > > But the problem is not exclusive to my patchset. In current kernel some
> > > > drivers (sound, for instance) already map compound pages with PTEs.
> > > 
> > > Hah, you were sending this as I was replying to the original thread.
> > > 
> > > Do we care if fast gup fails on some hardware driver's compound pages?
> > > I don't think we do, and it would be better not to complicate the
> > > low-level page_cache_get_speculative for them.
> > 
> > Fair enough :-/
> > 
> > I'll check tomorrow if it will look more reasonable on gup_pte_range()
> > level, rather than page_cache_get_speculative().
> 
> But we don't need it on the (fast) gup_pte_range() level either, do we?
> Or do you have THP changes in mmotm which are now demanding this?

No. I'll keep it local to my patchset.

-- 
 Kirill A. Shutemov

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]