The patch titled mm: swap write failure fixup has been added to the -mm tree. Its filename is mm-swap-write-failure-fixup.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: mm: swap write failure fixup From: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> Currently we can silently drop data if the write to swap failed. It usually doesn't result in data-corruption because on page-in the process will receive SIGBUS (assuming write-failure implies read-failure). This assumption might or might not be valid. This patch will avoid the page being discarded after a failed write. But will print a warning the sysadmin _should_ take to heart, if a lot of swap space becomes un-writeable, OOM is not far off. Tested by making the write fail 'randomly' once every 50 writes or so. Signed-off-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> Cc: Hugh Dickins <hugh@xxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- mm/page_io.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff -puN mm/page_io.c~mm-swap-write-failure-fixup mm/page_io.c --- a/mm/page_io.c~mm-swap-write-failure-fixup +++ a/mm/page_io.c @@ -52,8 +52,22 @@ static int end_swap_bio_write(struct bio if (bio->bi_size) return 1; - if (!uptodate) + if (!uptodate) { SetPageError(page); + /* + * We failed to write the page out to swap-space. + * Re-dirty the page in order to avoid it being reclaimed. + * Also print a dire warning that things will go BAD (tm) + * very quickly. + * + * Also clear PG_reclaim to avoid rotate_reclaimable_page() + */ + set_page_dirty(page); + printk(KERN_ALERT "Write-error on swap-device (%d:%d)\n", + imajor(bio->bi_bdev->bd_inode), + iminor(bio->bi_bdev->bd_inode)); + ClearPageReclaim(page); + } end_page_writeback(page); bio_put(bio); return 0; _ Patches currently in -mm which might be from a.p.zijlstra@xxxxxxxxx are mm-tracking-shared-dirty-pages.patch mm-balance-dirty-pages.patch mm-optimize-the-new-mprotect-code-a-bit.patch mm-small-cleanup-of-install_page.patch mm-fixup-do_wp_page.patch mm-msync-cleanup.patch mm-tracking-shared-dirty-pages-checks.patch mm-tracking-shared-dirty-pages-wimp.patch mm-swap-write-failure-fixup.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html