linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Heiko Carstens <heiko.carstens@de.ibm.com>
To: Sebastian Ott <sebott@linux.vnet.ibm.com>
Cc: Theodore Tso <tytso@mit.edu>,
	"linux-ext4@vger.kernel.org development"
	<linux-ext4@vger.kernel.org>,
	LKML Kernel <linux-kernel@vger.kernel.org>,
	pm list <linux-pm@lists.linux-foundation.org>
Subject: Re: Oops while going into hibernate
Date: Thu, 13 Jan 2011 14:36:12 +0100	[thread overview]
Message-ID: <20110113133612.GD2534@osiris.boeblingen.de.ibm.com> (raw)
In-Reply-To: <alpine.LFD.2.02.1101131238480.1899@localhost6.localdomain6>

On Thu, Jan 13, 2011 at 12:48:40PM +0100, Sebastian Ott wrote:
> On Wed, 12 Jan 2011, Theodore Tso wrote:
> > It looks like somehow the pages were left marked as dirty, so the
> > writeback daemons attempted writing back a page to an inode which was
> > never opened read/write (and in fact as a text page for
> > /usr/bin/killall, was mapped read/only).
> > Given that ext4 initializes jinode only when the file is opened
> > read/write, the fact that it is null, and the fact that it makes no
> > sense that a program would be modifying /usr/bin/killall as part of a
> > suspend/resume, it looks very much like we just unmasked a software
> > suspend bug....
> Ah, ok. Thanks for the explanation!

Eeeek... this seems to be an architecture specific bug that is only present
on s390.
The dirty bit for user space pages on all architectures but s390 are stored
into the PTE's. On s390 however they are stored into the storage key that
exists per _physical_ page.
So, what we should have done, when implementing suspend/resume on s390, is
to save the storage key for each page and write that to the suspend device
and upon resume restore the storage key contents for each physical page.
The code that would do that is missing... Hence _all_ pages of the resumed
image are dirty after they have been copied to their location.
*ouch*

Will fix.

  parent reply	other threads:[~2011-01-13 13:36 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-12 13:48 Oops while going into hibernate Sebastian Ott
2011-01-12 16:26 ` Ted Ts'o
2011-01-12 16:56   ` Sebastian Ott
2011-01-12 17:26     ` Ted Ts'o
2011-01-12 17:37       ` Sebastian Ott
2011-01-12 18:49       ` Sebastian Ott
2011-01-13  0:44         ` Theodore Tso
2011-01-13  5:56           ` Ted Ts'o
2011-01-13  5:59             ` [PATCH] PM / Hibernate: Don't mark pages dirty when reading pages while thawing Theodore Ts'o
2011-01-13 12:36               ` Sebastian Ott
2011-01-13 11:12           ` [linux-pm] Oops while going into hibernate Bojan Smojver
2011-01-13 11:49             ` Sebastian Ott
2011-01-13 11:48           ` Sebastian Ott
2011-01-13 12:11             ` [linux-pm] " Bojan Smojver
2011-01-13 12:31               ` Sebastian Ott
2011-01-13 13:36             ` Heiko Carstens [this message]
2011-01-13 18:46               ` Ted Ts'o
2011-01-13 21:30                 ` [linux-pm] " Bojan Smojver
2011-01-14  9:53                   ` Heiko Carstens
2011-01-14 13:14                     ` Bojan Smojver

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=20110113133612.GD2534@osiris.boeblingen.de.ibm.com \
    --to=heiko.carstens@de.ibm.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=sebott@linux.vnet.ibm.com \
    --cc=tytso@mit.edu \
    /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).