Add support for checksumming the swap pages written to disk, using the same checksum as btrfs (crc32c). Since the contents of the swap do not matter after a shutdown, the checksum is kept in memory only. This protects against silent corruption of the swap caused by hardware problems, the same way the btrfs checksum protects against silent corruption of the filesystem. It is useful even with CONFIG_BLK_DEV_INTEGRITY because it also protects against reads of stale data. The checksum is done in the swap layer (instead of in a separate block device or in the block layer) to allow the checksums to be tracked together with the rest of swap state (also allowing later for things like Avi Kivity's suggestions of keeping the checksum in the pte when possible and converting zeroed pages to a pte_none), to better allow for different things to be done by the software suspend code (which writes to the same place but has different needs), to simplify configuration (no need to edit the fstab), and because it felt the most natural layer to do it. Note that this code does not currently checksum the software suspend image. That will need to be done later. Lightly tested on a x86 VM. Changes since -v1: Rebase to 2.6.35-rc1 (code moved from swap.c to block_io.c) Use bio_data_dir() instead of acessing bi_rw directly Use __read_mostly for swapcsum_workqueue Include highmem.h instead of pagemap.h Cesar Eduardo Barros (3): mm/swapfile.c: better messages for swap_info_get kernel/power/block_io.c: do not use end_swap_bio_read mm: Swap checksum include/linux/swap.h | 31 ++++++- kernel/power/block_io.c | 22 +++++- mm/Kconfig | 22 +++++ mm/Makefile | 1 + mm/page_io.c | 92 +++++++++++++++++-- mm/swapcsum.c | 94 ++++++++++++++++++++ mm/swapfile.c | 187 +++++++++++++++++++++++++++++++++++++-- 7 files changed, 431 insertions(+), 18 deletions(-) create mode 100644 mm/swapcsum.c -- Cesar Eduardo Barros cesarb@xxxxxxxxxx cesar.barros@xxxxxxxxx -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>