[PATCH]swap-zero-page-bug

From: Li Xiaodong
Date: Wed Oct 29 2008 - 02:39:24 EST


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<lixd@xxxxxxxxxxxxxx>
--- 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;
}

Attachment: [PATCH]swap-zero-page-bug.patch
Description: Binary data