linux-bcache.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mathijs Kwik <mathijs@bluescreen303.nl>
To: Josep Lladonosa <jlladono@gmail.com>
Cc: "linux-bcache@vger.kernel.org" <linux-bcache@vger.kernel.org>
Subject: Re: bcache and hibernation
Date: Thu, 13 Nov 2014 17:52:01 +0100	[thread overview]
Message-ID: <874mu3xcum.fsf@bluescreen303.nl> (raw)
In-Reply-To: <CAPBO7TZF5qUV64UZJVE+WQkKa2aCJSTjkQxh6eVktH7nA41Vqw@mail.gmail.com> (Josep Lladonosa's message of "Thu, 13 Nov 2014 17:26:38 +0100")

Josep Lladonosa <jlladono@gmail.com> writes:

> On 13 November 2014 16:52, Mathijs Kwik <mathijs@bluescreen303.nl> wrote:
>
>> As a followup question:
>>
>> Is there a safe way to use hiberation in the presence of bcache?
>>
>
> Hello,
>
> I am using (just now) a laptop with root filesystem on a bcache partition,
> a separate boot partition (non bcache, small) and a swap partition used for
> hibernation and it works perfectly.

I'm glad to hear that. So how does your system boot/resume?
Does the initrd postpone registering/activating bcache until after the
resume-check? Or are my assumptions just wrong?


>
> Josep
>
>
>>
>> Assuming a (initrd) boot procedure should at least wait for the
>> hard-disk to settle, this will mean some udev rules will fire...
>> With the bcache udev rules in place, this means activating/attaching a
>> cache+backing device. Am I assuming correctly that this might
>> immediately lead to on-disk changes (writeback dirty pages for example)?
>>
>> So what's the way to go?
>> Make sure the bcache module doesn't get loaded when resuming from
>> hibernation? Tell udev not to activate the device automatically until we
>> check for a resume-image?
>>
>>
>>
>>
>>
>> Mathijs Kwik <mathijs@bluescreen303.nl> writes:
>>
>> > Hi all,
>> >
>> > Today, I lost most my data (don't worry, got backups) after the cache
>> > got corrupted somehow. I suspected a recent suspend-to-disk to be the
>> > cause. I checked how my distribution (NixOS) handles suspend/resume and
>> > I have some concerns about how bcache fits into this.
>> >
>> > Normally, the kernel and initrd get loaded. The initrd loads required
>> > kernel modules, waits for udev to settle, activates luks&lvm, then
>> > finally asks the kernel to resume from the resume device.
>> >
>> > The kernel documentation on suspend is VERY clear you should NOT touch
>> > anything on disk between suspend and resume. So activating luks and LVM
>> > is probably risky already, but it apppears both luks and LVM do not make
>> > any on-disk changes when activated and any in-memory state (within the
>> > resumed image) is still valid. The benefit of activating luks and LVM
>> > before resume seems to be that it allows resuming from encrypted/lvm
>> > volumes.
>> >
>> > Now, with bcache added, things probably get a bit hairy. NixOS supports
>> > bcache inside the initrd and uses udev rules to activate/attach. I
>> > suspect this is probably unsafe. Probably bcache starts to see if any
>> > dirty pages exist, to write them to the backing store. Even without
>> > writeback caching, the activation of lvm will read some sectors, which
>> > might trigger the cache to update. Then after resuming the image, the
>> > in-memory state is corrupted and further damage occurs.
>> >
>> > - Does this sound plausible?
>> > - Is there any way to tell bcache to make absolutely no changes to
>> >   either the backing device or the cache?
>> >   Basically like a readaround+writearound which can be triggered on
>> >   hibernate and switched off on resume.
>> >
>> > Thanks,
>> > Mathijs
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-bcache" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>

  parent reply	other threads:[~2014-11-13 16:52 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-13 13:52 bcache and hibernation Mathijs Kwik
2014-11-13 15:52 ` Mathijs Kwik
     [not found]   ` <CAPBO7TZF5qUV64UZJVE+WQkKa2aCJSTjkQxh6eVktH7nA41Vqw@mail.gmail.com>
2014-11-13 16:52     ` Mathijs Kwik [this message]
     [not found]       ` <CAPBO7TbQA2MbFS43racKOwZ+=U2jC4OcLF413-MvvNKML5=QZQ@mail.gmail.com>
2014-11-13 17:23         ` Mathijs Kwik
2015-02-10 22:36           ` Kai Krakow
2014-11-13 22:11 ` Kent Overstreet
2014-11-30 18:25   ` Mathijs Kwik
2014-11-30 23:24     ` Kent Overstreet
2014-11-30 23:29     ` Kent Overstreet
2014-12-01  8:48       ` Mathijs Kwik

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=874mu3xcum.fsf@bluescreen303.nl \
    --to=mathijs@bluescreen303.nl \
    --cc=jlladono@gmail.com \
    --cc=linux-bcache@vger.kernel.org \
    /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).