• Hugh Dickins's avatar
    huge tmpfs: fix fallocate(vanilla) advance over huge pages · 050dcb5c
    Hugh Dickins authored
    Patch series "huge tmpfs: shmem_is_huge() fixes and cleanups".
    
    A series of huge tmpfs fixes and cleanups.
    
    This patch (of 9):
    
    shmem_fallocate() goes to a lot of trouble to leave its newly allocated
    pages !Uptodate, partly to identify and undo them on failure, partly to
    leave the overhead of clearing them until later.  But the huge page case
    did not skip to the end of the extent, walked through the tail pages one
    by one, and appeared to work just fine: but in doing so, cleared and
    Uptodated the huge page, so there was no way to undo it on failure.
    
    And by setting Uptodate too soon, it messed up both its nr_falloced and
    nr_unswapped counts, so that the intended "time to give up" heuristic did
    not work at all.
    
    Now advance immediately to the end of the huge extent, with a comment on
    why this is more than just an optimization.  But although this speeds up
    huge tmpfs fallocation, it does leave the clearing until first use, and
    some users may have come to appreciate slow fallocate but fast first use:
    if they complain, then we can consider adding a pass to clear at the end.
    
    Link: https://lkml.kernel.org/r/da632211-8e3e-6b1-aee-ab24734429a0@google.com
    Link: https://lkml.kernel.org/r/16201bd2-70e-37e2-e89b-5f929430da@google.com
    Fixes: 800d8c63 ("shmem: add huge pages support")
    Signed-off-by: default avatarHugh Dickins <hughd@google.com>
    Reviewed-by: default avatarYang Shi <shy828301@gmail.com>
    Cc: Shakeel Butt <shakeelb@google.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    050dcb5c
shmem.c 109 KB