All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Austin S. Hemmelgarn" <ahferroin7@gmail.com>
To: Christoph Anton Mitterer <calestyo@scientia.net>,
	Qu Wenruo <quwenruo.btrfs@gmx.com>
Cc: Btrfs BTRFS <linux-btrfs@vger.kernel.org>
Subject: Re: RedHat 7.4 Release Notes: "Btrfs has been deprecated" - wut?
Date: Mon, 14 Aug 2017 10:23:46 -0400	[thread overview]
Message-ID: <b0e0e9e4-5b7f-ac84-b05c-8724762b16ea@gmail.com> (raw)
In-Reply-To: <1502713484.3608.1.camel@scientia.net>

On 2017-08-14 08:24, Christoph Anton Mitterer wrote:
> On Mon, 2017-08-14 at 14:36 +0800, Qu Wenruo wrote:
>>> And how are you going to write your data and checksum atomically
>>> when
>>> doing in-place updates?
>>
>> Exactly, that's the main reason I can figure out why btrfs disables
>> checksum for nodatacow.
> 
> Still, I don't get the problem here...
> 
> Yes it cannot be done atomically (without workarounds like a journal or
> so), but this should be only an issue in case of a crash or similar.
> 
> And in this case nodatacow+nochecksum is anyway already bad, it's also
> not atomic, so data may be completely garbage (e.g. half written)...
> just that no one will ever notice.
> 
> The only problem that nodatacow + checksuming + nonatomic should give
> is when the data was actually correctly written at a crash, but the
> cheksum was not, in which case the bogus checksum would invalidate the
> good data on next read.
> 
> Or do I miss something?
> 
> 
> To me that sounds still much better than having no protection at all.
Assume you have higher level verification.  Would you rather not be able 
to read the data regardless of if it's correct or not, or be able to 
read it and determine yourself if it's correct or not?  For almost 
anybody, the answer is going to be the second case, because the 
application knows better than the OS if the data is correct (and 
'correct' may be a threshold, not some binary determination).  At that 
point, you need to make the checksum error a warning instead of 
returning -EIO.  How do you intend to communicate that warning back to 
the application?  The kernel log won't work, because on any reasonably 
secure system it's not visible to anyone but root.  There's also no side 
channel for the read() system calls that you can utilize.  That then 
means that the checksums end up just being a means for the administrator 
to know some data wasn't written correctly, but they should know that 
anyway because the system crashed.  As a result, the whole thing ends up 
reduced to some extra work for a pointless notification that some people 
may not even see.

Looking at this from a different angle: Without background, what would 
you assume the behavior to be for this?  For most people, the assumption 
would be that this provides the same degree of data safety that the 
checksums do when the data is CoW.  We already have enough issues with 
people misunderstanding how things work and losing data as a result 
(keep in mind that the average user doesn't read documentation and will 
often blindly follow any random advice they see online), and we don't 
need more that are liable to cause data loss.

  reply	other threads:[~2017-08-14 14:23 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-02  8:38 RedHat 7.4 Release Notes: "Btrfs has been deprecated" - wut? Brendan Hide
2017-08-02  9:11 ` Wang Shilong
2017-08-03 19:18   ` Chris Murphy
2017-08-02 11:25 ` Austin S. Hemmelgarn
2017-08-02 12:55   ` Lutz Vieweg
2017-08-02 13:47     ` Austin S. Hemmelgarn
2017-08-02 18:44 ` Chris Mason
2017-08-02 22:12   ` Fajar A. Nugraha
2017-08-02 22:22 ` Chris Murphy
2017-08-03  9:59   ` Lutz Vieweg
2017-08-03 18:08 ` waxhead
2017-08-03 18:29   ` Christoph Anton Mitterer
2017-08-03 19:22     ` Austin S. Hemmelgarn
2017-08-03 20:45       ` Brendan Hide
2017-08-03 22:00         ` Chris Murphy
2017-08-04 11:26         ` Austin S. Hemmelgarn
2017-08-03 19:03   ` Austin S. Hemmelgarn
2017-08-04  9:48     ` Duncan
2017-08-16 18:07   ` David Sterba
2017-08-04 14:05 ` Qu Wenruo
2017-08-04 23:55   ` Wang Shilong
2017-08-07 15:27   ` Chris Murphy
2017-08-10  0:35     ` Qu Wenruo
2017-08-12  0:10       ` Christoph Anton Mitterer
2017-08-12  7:42         ` Christoph Hellwig
2017-08-12 11:51           ` Christoph Anton Mitterer
2017-08-12 12:12             ` Hugo Mills
2017-08-13 14:08               ` Goffredo Baroncelli
2017-08-14  7:08                 ` Qu Wenruo
2017-08-14 14:23                   ` Goffredo Baroncelli
2017-08-14 19:08                     ` Chris Murphy
2017-08-14 20:27                       ` Goffredo Baroncelli
2017-08-14  6:36           ` Qu Wenruo
2017-08-14  7:43             ` Paul Jones
2017-08-14  7:46               ` Qu Wenruo
2017-08-14 12:32                 ` Christoph Anton Mitterer
2017-08-14 12:58                   ` Qu Wenruo
2017-08-14 12:24             ` Christoph Anton Mitterer
2017-08-14 14:23               ` Austin S. Hemmelgarn [this message]
2017-08-14 15:13                 ` Graham Cobb
2017-08-14 15:53                   ` Austin S. Hemmelgarn
2017-08-14 16:42                     ` Graham Cobb
2017-08-14 19:54                     ` Christoph Anton Mitterer
2017-08-15 11:37                       ` Austin S. Hemmelgarn
2017-08-15 14:41                         ` Christoph Anton Mitterer
2017-08-15 15:43                           ` Austin S. Hemmelgarn
2017-08-16 13:12                       ` Chris Mason
2017-08-16 13:31                         ` Christoph Anton Mitterer
2017-08-16 13:53                           ` Austin S. Hemmelgarn
2017-08-16 14:11                             ` Christoph Anton Mitterer
2017-08-16 15:07                               ` Austin S. Hemmelgarn
2017-08-16 17:26                                 ` Peter Grandi
2017-08-16 18:19                             ` David Sterba
2017-08-16 16:54                           ` Peter Grandi
2017-08-16 13:56                         ` Austin S. Hemmelgarn
2017-08-16 14:01                         ` Qu Wenruo
2017-08-16 19:52                           ` Chris Murphy
2017-08-17  6:25                             ` GWB
2017-08-17 11:47                               ` Austin S. Hemmelgarn
2017-08-17 19:00                                 ` Chris Murphy
2017-08-17 20:34                                   ` GWB
2017-08-16 16:44                         ` Peter Grandi
2017-08-14 19:39                 ` Christoph Anton Mitterer

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=b0e0e9e4-5b7f-ac84-b05c-8724762b16ea@gmail.com \
    --to=ahferroin7@gmail.com \
    --cc=calestyo@scientia.net \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=quwenruo.btrfs@gmx.com \
    /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.