lkml.org 
[lkml]   [2013]   [May]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCHv4 15/39] thp, mm: trigger bug in replace_page_cache_page() on THP
    On 05/11/2013 06:23 PM, Kirill A. Shutemov wrote:
    > From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    >
    > replace_page_cache_page() is only used by FUSE. It's unlikely that we
    > will support THP in FUSE page cache any soon.
    >
    > Let's pospone implemetation of THP handling in replace_page_cache_page()
    > until any will use it.
    ...
    > diff --git a/mm/filemap.c b/mm/filemap.c
    > index 657ce82..3a03426 100644
    > --- a/mm/filemap.c
    > +++ b/mm/filemap.c
    > @@ -428,6 +428,8 @@ int replace_page_cache_page(struct page *old, struct page *new, gfp_t gfp_mask)
    > {
    > int error;
    >
    > + VM_BUG_ON(PageTransHuge(old));
    > + VM_BUG_ON(PageTransHuge(new));
    > VM_BUG_ON(!PageLocked(old));
    > VM_BUG_ON(!PageLocked(new));
    > VM_BUG_ON(new->mapping);

    The code calling replace_page_cache_page() has a bunch of fallback and
    error returning code. It seems a little bit silly to bring the whole
    machine down when you could just WARN_ONCE() and return an error code
    like fuse already does:

    > /*
    > * This is a new and locked page, it shouldn't be mapped or
    > * have any special flags on it
    > */
    > if (WARN_ON(page_mapped(oldpage)))
    > goto out_fallback_unlock;
    > if (WARN_ON(page_has_private(oldpage)))
    > goto out_fallback_unlock;
    > if (WARN_ON(PageDirty(oldpage) || PageWriteback(oldpage)))
    > goto out_fallback_unlock;
    > if (WARN_ON(PageMlocked(oldpage)))
    > goto out_fallback_unlock;



    \
     
     \ /
      Last update: 2013-05-21 22:41    [W:4.565 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site