All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arne Jansen <sensille@gmx.net>
To: Gregory Maxwell <gmaxwell@gmail.com>
Cc: Berend Dekens <btrfs@cyberwizzard.nl>, linux-btrfs@vger.kernel.org
Subject: Re: BTRFS and power loss ~= corruption?
Date: Fri, 26 Aug 2011 08:37:14 +0200	[thread overview]
Message-ID: <4E573F1A.2060807@gmx.net> (raw)
In-Reply-To: <CAAS2fgRfW3J441Xv8x6cnKWyKGao-ZGi4_Od=iB-fLX3YixV5g@mail.gmail.com>

On 26.08.2011 01:01, Gregory Maxwell wrote:
> On Wed, Aug 24, 2011 at 9:11 AM, Berend Dekens <btrfs@cyberwizzard.nl> wrote:
> [snip]
>> I thought the idea of COW was that whatever happens, you can always mount in
>> a semi-consistent state?
> [snip]
> 
> 
> It seems to me that if someone created a block device which recorded
> all write operations a rather excellent test could be constructed
> where a btrfs filesystem is recorded under load and then every partial
> replay is mounted and checked for corruption/data loss.
> 
> This would result in high confidence that no power loss event could
> destroy data given the offered load assuming well behaved
> (non-reordering hardware).  If it recorded barrier operations the a
> tool could also try many (but probably not all) permissible
> reorderings at every truncation offset.
> 

I like the idea. Some more thoughts:
 - instead of trying all reorderings it might be enough to just always
   deliver the oldest possible copy
 - the order in which btrfs writes the data probably depends on the
   order in which the device acknowledges the request. You might need
   to add some reordering there, too
 - you need to produce a wide variety of workloads, as problems might
   only occur at a special kind of it (directIO, fsync, snapshots...)
 - if there really is a regression somewhere, it would be good to also
   include the full block layer into the test, as the regression might
   not be in btrfs at all
 - as a first small step one could just use blktrace to record the write
   order and analyze the order on mount as well

> It seems to me that the existence of this kind of testing is something
> that should be expected of a modern filesystem before it sees
> widescale production use.
> --

  reply	other threads:[~2011-08-26  6:37 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-24 13:11 BTRFS and power loss ~= corruption? Berend Dekens
2011-08-24 13:31 ` Arne Jansen
2011-08-24 15:01   ` Berend Dekens
2011-08-24 15:04     ` *** GMX Spamverdacht *** " Arne Jansen
2011-08-24 15:13       ` Berend Dekens
2011-08-24 17:06         ` Mitch Harder
2011-08-24 21:00           ` Ahmed Kamal
2011-08-25  3:31           ` Anand Jain
2011-08-25 17:55             ` Martin Steigerwald
2011-08-25 22:16               ` Maciej Marcin Piechotka
2011-11-09 20:15                 ` Martin Steigerwald
2011-08-25 23:01 ` Gregory Maxwell
2011-08-26  6:37   ` Arne Jansen [this message]
2011-08-26  7:48     ` Mike Fleetwood
2011-08-26  9:30       ` Arne Jansen
2011-11-09 17:33   ` Stefan Behrens

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=4E573F1A.2060807@gmx.net \
    --to=sensille@gmx.net \
    --cc=btrfs@cyberwizzard.nl \
    --cc=gmaxwell@gmail.com \
    --cc=linux-btrfs@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.