linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Cesar Eduardo Barros <cesarb@cesarb.net>
To: linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org,
	linux-pm@lists.linux-foundation.org, Avi Kivity <avi@redhat.com>,
	Nick Piggin <npiggin@suse.de>,
	Minchan Kim <minchan.kim@gmail.com>,
	Jens Axboe <jens.axboe@oracle.com>,
	Hugh Dickins <hughd@google.com>
Subject: [PATCH v2 0/3] mm: Swap checksum
Date: Sat, 05 Jun 2010 20:14:12 -0300	[thread overview]
Message-ID: <4C0ADA44.4020406@cesarb.net> (raw)

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@cesarb.net
cesar.barros@gmail.com

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

             reply	other threads:[~2010-06-05 23:14 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-05 23:14 Cesar Eduardo Barros [this message]
2010-06-05 23:14 ` [PATCH v2 1/3] mm/swapfile.c: better messages for swap_info_get Cesar Eduardo Barros
2010-06-05 23:14 ` [PATCH v2 2/3] kernel/power/block_io.c: do not use end_swap_bio_read Cesar Eduardo Barros
2010-06-05 23:14 ` [PATCH v2 3/3] mm: Swap checksum Cesar Eduardo Barros

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C0ADA44.4020406@cesarb.net \
    --to=cesarb@cesarb.net \
    --cc=avi@redhat.com \
    --cc=hughd@google.com \
    --cc=jens.axboe@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=minchan.kim@gmail.com \
    --cc=npiggin@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).