[PATCH]swap-zero-page-bug - Kernel

This is a discussion on [PATCH]swap-zero-page-bug - Kernel ; According to Documentation/filesystems/proc.txt, kernel should swap one page as vm.page-cluster is 0, while it seems not like so in mm/swapfile.c: ... int our_page_cluster = page_cluster; ... if (!our_page_cluster) /* no readahead */ return 0; ... It is better to remove ...

+ Reply to Thread
Results 1 to 2 of 2

Thread: [PATCH]swap-zero-page-bug

  1. [PATCH]swap-zero-page-bug

    According to Documentation/filesystems/proc.txt, kernel should swap one page
    as vm.page-cluster is 0, while it seems not like so in mm/swapfile.c:
    ...
    int our_page_cluster = page_cluster;
    ...
    if (!our_page_cluster) /* no readahead */
    return 0;
    ...

    It is better to remove that checkpoint.

    Signed-off-by: Li Xiaodong
    --- swapfile.c.orig 2008-10-29 21:29:36.000000000 +0800
    +++ swapfile.c 2008-10-29 21:59:49.000000000 +0800
    @@ -1810,9 +1810,6 @@
    pgoff_t base, end;
    int nr_pages = 0;

    - if (!our_page_cluster) /* no readahead */
    - return 0;
    -
    si = &swap_info[swp_type(entry)];
    target = swp_offset(entry);
    base = (target >> our_page_cluster) << our_page_cluster; @@ -1847,5
    +1844,5 @@
    * if only 1, say 0, since there's then no readahead to be done.
    */
    *offset = ++toff;
    - return nr_pages? ++nr_pages: 0;
    + return nr_pages ? ++nr_pages : nr_pages;
    }



  2. Re: [PATCH]swap-zero-page-bug

    On Wed, 29 Oct 2008, Li Xiaodong wrote:

    > According to Documentation/filesystems/proc.txt, kernel should swap one page
    > as vm.page-cluster is 0, while it seems not like so in mm/swapfile.c:
    > ...
    > int our_page_cluster = page_cluster;
    > ...
    > if (!our_page_cluster) /* no readahead */
    > return 0;
    > ...
    >
    > It is better to remove that checkpoint.


    No, page_cluster 0 allows swapin one page at a time, but disallows
    swapin readahead (better named readaround) i.e. disallows reading
    more than the one page actually requested.

    Compare with how valid_swaphandles() is used from swapin_readahead():
    there's actually one extra call to read_swap_cache_async() - because
    we must ignore failure on the readaround but not on the page requested.

    That "return 0" avoids the overhead of a pointlessly doubled
    read_swap_cache_async() when there's only one page to be read.

    Your patch might be needed if you'd found that swapin of one page
    was not working at all - but you'd be making a stronger case if
    you'd found that, I think!

    Hugh
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread