[lkml]   [2002]   [May]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] double flush_page_to_ram
       From: Andrea Arcangeli <>
    Date: Thu, 9 May 2002 15:21:16 +0200

    The reason I did this patch is because it was functional equivalent to
    old 2.4 kernels.

    in turn old 2.4 kernels were all wrong:

    if (no_share) {
    struct page *new_page = alloc_page(GFP_HIGHUSER);

    if (new_page) {
    copy_user_highpage(new_page, old_page, address);
    } else
    new_page = NOPAGE_OOM;
    return new_page;

    return old_page;

    they don't flush old_page before the the memcpy, they only flush the
    _anon_ page _after_ the memcpy like current kernel with vm updates or Hugh's
    patch is doing (never the pagecache if it's an early cow).

    filemap.c:filemap_nopage() does the flush in 2.4.x, what are you
    talking about?

    It seems like
    moving the early cow into memory.c fixed the flush_page_to_ram bug by
    luck, because Hugh's patch is otherwise equivalent to old 2.4 kernels.


    No it isn't. In 2.4.x kernels filemap_nopage does the flush just
    like it does now in 2.5.x What ancient 2.4.x sources are you looking
    at where filemap_nopage does not do the flush_page_to_ram right after
    the success: label?

    If yes, I prefer to move the flush_page_to_ram on the _pagecache_
    _before_ the memcpy into memory.c, it's cleaner if the pagecache layer
    doesn't need to care about cache aliasing between kernel direct mapping
    and userspace address space (but that it only cares about struct pages
    and filesystem, so only kernel side), and that such user-related part is
    covered only in memory.c.

    NO! The correct answer is to kill off flush_page_to_ram altogether.
    It is broken by design, and trying to make it work somehow "better"
    in 2.5.x is a losing game. We should make the ports fix up their
    stuff for a mechanism that we know _does_ work and that is
    flush_dcache_page plus {copy,clear}_user_page().
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:25    [W:0.024 / U:1.848 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site