Index: linux-2.6/mm/vmscan.c =================================================================== --- linux-2.6.orig/mm/vmscan.c 2007-07-31 19:07:14.000000000 -0700 +++ linux-2.6/mm/vmscan.c 2007-07-31 19:08:42.000000000 -0700 @@ -279,6 +279,8 @@ typedef enum { PAGE_SUCCESS, /* page is clean and locked */ PAGE_CLEAN, + /* Page can never be written */ + PAGE_UNWRITABLE, } pageout_t; /* @@ -321,7 +323,7 @@ static pageout_t pageout(struct page *pa return PAGE_KEEP; } if (mapping->a_ops->writepage == NULL) - return PAGE_ACTIVATE; + return PAGE_UNWRITEABLE; if (!may_write_to_queue(mapping->backing_dev_info)) return PAGE_KEEP; @@ -507,6 +509,7 @@ static unsigned long shrink_page_list(st switch(pageout(page, mapping)) { case PAGE_KEEP: goto keep_locked; + case PAGE_UNWRITEABLE: case PAGE_ACTIVATE: goto activate_locked; case PAGE_SUCCESS: