lkml.org 
[lkml]   [2017]   [Feb]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCHv6 08/37] filemap: handle huge pages in do_generic_file_read()
    On Thu, Feb 09, 2017 at 01:55:05PM -0800, Matthew Wilcox wrote:
    > On Thu, Jan 26, 2017 at 02:57:50PM +0300, Kirill A. Shutemov wrote:
    > > +++ b/mm/filemap.c
    > > @@ -1886,6 +1886,7 @@ static ssize_t do_generic_file_read(struct file *filp, loff_t *ppos,
    > > if (unlikely(page == NULL))
    > > goto no_cached_page;
    > > }
    > > + page = compound_head(page);
    >
    > We got this page from find_get_page(), which gets it from
    > pagecache_get_page(), which gets it from find_get_entry() ... which
    > (unless I'm lost in your patch series) returns the head page. So this
    > line is redundant, right?

    No. pagecache_get_page() returns subpage. See description of the first
    patch.

    > But then down in filemap_fault, we have:
    >
    > VM_BUG_ON_PAGE(page->index != offset, page);
    >
    > ... again, maybe I'm lost somewhere in your patch series, but I don't see
    > anywhere you remove that line (or modify it).

    This should be fine as find_get_page() returns subpage.

    > So are you not testing
    > with VM debugging enabled, or are you not doing a test which includes
    > mapping a file with huge pages, reading from it (to get the page in cache),
    > then faulting on an address that is not in the first 4kB of that 2MB?
    >
    > --
    > To unsubscribe, send a message with 'unsubscribe linux-mm' in
    > the body to majordomo@kvack.org. For more info on Linux MM,
    > see: http://www.linux-mm.org/ .
    > Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

    --
    Kirill A. Shutemov

    \
     
     \ /
      Last update: 2017-02-13 16:39    [W:4.108 / U:0.304 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site