[PATCH v2 0/3] mm: Swap checksum

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]