From: Su Yue <l@damenly.su>
To: Qu Wenruo <quwenruo.btrfs@gmx.com>
Cc: Erik Jensen <erikjensen@rkjnsn.net>,
Hugo Mills <hugo@carfax.org.uk>,
linux-btrfs <linux-btrfs@vger.kernel.org>
Subject: Re: "bad tree block start" when trying to mount on ARM
Date: Mon, 01 Feb 2021 13:49:46 +0800 [thread overview]
Message-ID: <mtwofibp.fsf@damenly.su> (raw)
In-Reply-To: <16d35c47-40c5-25a9-c2ba-f6aab00db8e6@gmx.com>
On Mon 01 Feb 2021 at 10:35, Qu Wenruo <quwenruo.btrfs@gmx.com>
wrote:
> On 2021/1/29 下午2:39, Erik Jensen wrote:
>> On Mon, Jan 25, 2021 at 8:54 PM Erik Jensen
>> <erikjensen@rkjnsn.net> wrote:
>>> On Wed, Jan 20, 2021 at 1:08 AM Erik Jensen
>>> <erikjensen@rkjnsn.net> wrote:
>>>> On Wed, Jan 20, 2021 at 12:31 AM Qu Wenruo
>>>> <quwenruo.btrfs@gmx.com> wrote:
>>>>> On 2021/1/20 下午4:21, Qu Wenruo wrote:
>>>>>> On 2021/1/19 下午5:28, Erik Jensen wrote:
>>>>>>> On Mon, Jan 18, 2021 at 9:22 PM Erik Jensen
>>>>>>> <erikjensen@rkjnsn.net>
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> On Mon, Jan 18, 2021 at 4:12 AM Erik Jensen
>>>>>>>> <erikjensen@rkjnsn.net>
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> The offending system is indeed ARMv7 (specifically a
>>>>>>>>> Marvell ARMADA®
>>>>>>>>> 388), but I believe the Broadcom BCM2835 in my Raspberry
>>>>>>>>> Pi is
>>>>>>>>> actually ARMv6 (with hardware float support).
>>>>>>>>
>>>>>>>> Using NBD, I have verified that I receive the same error
>>>>>>>> when
>>>>>>>> attempting to mount the filesystem on my ARMv6 Raspberry
>>>>>>>> Pi:
>>>>>>>> [ 3491.339572] BTRFS info (device dm-4): disk space
>>>>>>>> caching is enabled
>>>>>>>> [ 3491.394584] BTRFS info (device dm-4): has skinny
>>>>>>>> extents
>>>>>>>> [ 3492.385095] BTRFS error (device dm-4): bad tree block
>>>>>>>> start, want
>>>>>>>> 26207780683776 have 3395945502747707095
>>>>>>>> [ 3492.514071] BTRFS error (device dm-4): bad tree block
>>>>>>>> start, want
>>>>>>>> 26207780683776 have 3395945502747707095
>>>>>>>> [ 3492.553599] BTRFS warning (device dm-4): failed to
>>>>>>>> read tree root
>>>>>>>> [ 3492.865368] BTRFS error (device dm-4): open_ctree
>>>>>>>> failed
>>>>>>>>
>>>>>>>> The Raspberry Pi is running Linux 5.4.83.
>>>>>>>>
>>>>>>>
>>>>>>> Okay, after some more testing, ARM seems to be irrelevant,
>>>>>>> and 32-bit
>>>>>>> is the key factor. On a whim, I booted up an i686, 5.8.14
>>>>>>> kernel in a
>>>>>>> VM, attached the drives via NBD, ran cryptsetup, tried to
>>>>>>> mount, and…
>>>>>>> I got the exact same error message.
>>>>>>>
>>>>>> My educated guess is on 32bit platforms, we passed
>>>>>> incorrect sector into
>>>>>> bio, thus gave us garbage.
>>>>>
>>>>> To prove that, you can use bcc tool to verify it.
>>>>> biosnoop can do that:
>>>>> https://github.com/iovisor/bcc/blob/master/tools/biosnoop_example.txt
>>>>>
>>>>> Just try mount the fs with biosnoop running.
>>>>> With "btrfs ins dump-tree -t chunk <dev>", we can manually
>>>>> calculate the
>>>>> offset of each read to see if they matches.
>>>>> If not match, it would prove my assumption and give us a
>>>>> pretty good
>>>>> clue to fix.
>>>>>
>>>>> Thanks,
>>>>> Qu
>>>>>
>>>>>>
>>>>>> Is this bug happening only on the fs, or any other btrfs
>>>>>> can also
>>>>>> trigger similar problems on 32bit platforms?
>>>>>>
>>>>>> Thanks,
>>>>>> Qu
>>>>
>>>> I have only observed this error on this file system.
>>>> Additionally, the
>>>> error mounting with the NAS only started after I did a `btrfs
>>>> replace`
>>>> on all five 8TB drives using an x86_64 system. (Ironically, I
>>>> did this
>>>> with the goal of making it faster to use the filesystem on
>>>> the NAS by
>>>> re-encrypting the drives to use a cipher supported by my
>>>> NAS's crypto
>>>> accelerator.)
>>>>
>>>> Maybe this process of shuffling 40TB around caused some value
>>>> in the
>>>> filesystem to increment to the point that a calculation using
>>>> it
>>>> overflows on 32-bit systems?
>>>>
>>>> I should be able to try biosnoop later this week, and I'll
>>>> report back
>>>> with the results.
>>>
>>> Okay, I tried running biosnoop, but I seem to be running into
>>> this
>>> bug: https://github.com/iovisor/bcc/issues/3241 (That bug was
>>> reported
>>> for cpudist, but I'm seeing the same error when I try to run
>>> biosnoop.)
>>>
>>> Anything else I can try?
>>
>> Is it possible to add printks to retrieve the same data?
>>
> Sorry for the late reply, busying testing subpage patchset. (And
> unfortunately no much process).
>
> If bcc is not possible, you can still use ftrace events, but
> unfortunately I didn't find good enough one. (In fact, the trace
> events
> for block layer is pretty limited).
>
> You can try to add printk()s in function blk_account_io_done()
> to
> emulate what's done in function trace_req_completion() of
> biosnoop.
>
> The time delta is not important, we only need the device name,
> sector
> and length.
>
Tips: There are ftrace events called block:block_rq_issue and
block:block_rq_complete to fetch those infomation. No need to
add printk().
>
> Thanks,
> Qu
next prev parent reply other threads:[~2021-02-01 5:57 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-21 8:34 "bad tree block start" when trying to mount on ARM Erik Jensen
2019-05-21 8:56 ` Patrik Lundquist
2019-05-21 9:01 ` Erik Jensen
2019-05-21 9:18 ` Hugo Mills
2019-05-22 16:02 ` Erik Jensen
2019-06-26 7:04 ` Erik Jensen
2019-06-26 8:10 ` Qu Wenruo
[not found] ` <CAMj6ewO229vq6=s+T7GhUegwDADv4dzhqPiM0jo10QiKujvytA@mail.gmail.com>
2019-06-28 8:15 ` Qu Wenruo
2021-01-18 10:50 ` Erik Jensen
[not found] ` <CAMj6ewMqXLtrBQgTJuz04v3MBZ0W95fU4pT0jP6kFhuP830TuA@mail.gmail.com>
2021-01-18 11:07 ` Qu Wenruo
2021-01-18 11:55 ` Erik Jensen
2021-01-18 12:01 ` Qu Wenruo
2021-01-18 12:12 ` Erik Jensen
2021-01-19 5:22 ` Erik Jensen
2021-01-19 9:28 ` Erik Jensen
2021-01-20 8:21 ` Qu Wenruo
2021-01-20 8:30 ` Qu Wenruo
[not found] ` <CAMj6ewOqCJTGjykDijun9_LWYELA=92HrE+KjGo-ehJTutR_+w@mail.gmail.com>
2021-01-26 4:54 ` Erik Jensen
2021-01-29 6:39 ` Erik Jensen
2021-02-01 2:35 ` Qu Wenruo
2021-02-01 5:49 ` Su Yue [this message]
2021-02-04 6:16 ` Erik Jensen
2021-02-06 1:57 ` Erik Jensen
2021-02-10 5:47 ` Qu Wenruo
2021-02-10 22:17 ` Erik Jensen
2021-02-10 23:47 ` Qu Wenruo
2021-02-18 1:24 ` Qu Wenruo
2021-02-18 4:03 ` Erik Jensen
2021-02-18 5:24 ` Qu Wenruo
2021-02-18 5:49 ` Erik Jensen
2021-02-18 6:09 ` Qu Wenruo
2021-02-18 6:59 ` Erik Jensen
2021-02-18 7:24 ` Qu Wenruo
2021-02-18 7:59 ` Erik Jensen
2021-02-18 8:38 ` Qu Wenruo
2021-02-18 8:52 ` Erik Jensen
2021-02-18 8:59 ` Qu Wenruo
2021-02-20 2:47 ` Erik Jensen
2021-02-20 3:16 ` Qu Wenruo
2021-02-20 4:28 ` Erik Jensen
2021-02-20 6:01 ` Qu Wenruo
2021-02-21 5:36 ` Erik Jensen
2021-02-18 7:25 ` Erik Jensen
2019-05-21 10:17 ` Qu Wenruo
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=mtwofibp.fsf@damenly.su \
--to=l@damenly.su \
--cc=erikjensen@rkjnsn.net \
--cc=hugo@carfax.org.uk \
--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 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).