linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Nikolay Borisov <nborisov@suse.com>
To: Qu Wenruo <quwenruo.btrfs@gmx.com>,
	Chris Murphy <lists@colorremedies.com>,
	Btrfs BTRFS <linux-btrfs@vger.kernel.org>
Subject: Re: confusing behavior when supers mismatch
Date: Mon, 11 Mar 2019 14:26:13 +0200	[thread overview]
Message-ID: <62ad41ed-5fba-d641-9a19-9231a55f603c@suse.com> (raw)
In-Reply-To: <cf8922ef-b7db-7779-c140-80090efc60d5@gmx.com>



On 11.03.19 г. 3:17 ч., Qu Wenruo wrote:
> 
> 
> On 2019/3/11 上午7:09, Chris Murphy wrote:
>> In the case where superblock 0 at 65536 is valid but stale (older than
>> the others):
> 
> Then this means either the fs is fuzzed, or the FUA implementation of
> the disk is completely screwed up.
> 
> Btrfs kernel submit super blocks as the following sequence:
> 1) wait all metadata write
> 2) flush
> 3) FUA the primary superblock

SATA devices generally do not have FUA support. For example my evo 850
ssds do not support it nor does my evo 860 PRO. IMO not having
functioning FUA seems to be the norm rather than an exception.


> 4) write the backup superblocks
> 
> If backup is newer than primary, then the FUA write doesn't reach disk
> before normal write.
> This means any fs could be corrupted on that disk, not only btrfs.
> 
>>
>> 1. btrfs check doesn't complain, the stale super is used for the check
>> 2. when mounting, super 0 is used, no complaints at mount time, fairly
>> quickly the newer supers are overwritten
> 
> The reason why kernel doesn't search backup roots is to avoid stale btrfs.
> For case like mkfs.btrfs -> do btrfs write -> mkfs.xfs -> try mount as
> btrfs again, this would cause problems.
> 
> So IMHO always use the primary superblock is the designed behavior.
> 
> Thanks,
> Qu
> 
>>
>> Is this expected? In particular, in lieu of `btrfs rescue super`
>> behavior which considers super 0 a bad super, and offers to fix it
>> from the newer ones, and when I answer y, it replaces super 0 with
>> newer information from the other supers.
>>
>> I think the `btrfs rescue` behavior is correct. I would expect that
>> all the supers are read at mount time, and if there's discrepancy that
>> either there's code to suspiciously sanity check the latest roots in
>> the newest super, or it flat out fails to mount. Mounting based on
>> stale super data seems risky doesn't it?
>>
> 

  parent reply	other threads:[~2019-03-11 12:26 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-10 23:09 confusing behavior when supers mismatch Chris Murphy
2019-03-10 23:18 ` Chris Murphy
2019-03-11  1:17 ` Qu Wenruo
2019-03-11  3:20   ` Chris Murphy
2019-03-11  4:58     ` Qu Wenruo
2019-03-11  5:19       ` Chris Murphy
2019-03-11 12:26   ` Nikolay Borisov [this message]
2019-03-11 12:35     ` Qu Wenruo
2019-03-11 12:37       ` Nikolay Borisov
2019-03-11 13:27         ` Qu Wenruo
2019-03-11 14:38 ` Anand Jain

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=62ad41ed-5fba-d641-9a19-9231a55f603c@suse.com \
    --to=nborisov@suse.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=lists@colorremedies.com \
    --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 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).