From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: Linux FS Devel <linux-fsdevel@vger.kernel.org>,
"linux-btrfs@vger.kernel.org" <linux-btrfs@vger.kernel.org>
Subject: Re: page->index limitation on 32bit system?
Date: Thu, 18 Feb 2021 20:42:14 +0800 [thread overview]
Message-ID: <af1aac2f-e7dc-76f3-0b3a-4cb36b22247f@gmx.com> (raw)
In-Reply-To: <20210218121503.GQ2858050@casper.infradead.org>
On 2021/2/18 下午8:15, Matthew Wilcox wrote:
> On Thu, Feb 18, 2021 at 04:54:46PM +0800, Qu Wenruo wrote:
>> Recently we got a strange bug report that, one 32bit systems like armv6
>> or non-64bit x86, certain large btrfs can't be mounted.
>>
>> It turns out that, since page->index is just unsigned long, and on 32bit
>> systemts, that can just be 32bit.
>>
>> And when filesystems is utilizing any page offset over 4T, page->index
>> get truncated, causing various problems.
>
> 4TB? I think you mean 16TB (4kB * 4GB)
Oh, offset by 2...
>
> Yes, this is a known limitation. Some vendors have gone to the trouble
> of introducing a new page_index_t. I'm not convinced this is a problem
> worth solving. There are very few 32-bit systems with this much storage
> on a single partition (everything should work fine if you take a 20TB
> drive and partition it into two 10TB partitions).
What would happen if a user just tries to write 4K at file offset 16T
fir a sparse file?
Would it be blocked by other checks before reaching the underlying fs?
>
> As usual, the best solution is for people to stop buying 32-bit systems.
>
They don't need a large single partition to even trigger it.
This is especially true for btrfs, which has its internal address space
(and it can be any aligned U64 value).
Even 1T btrfs can have its metadata at its internal bytenr way larger
than 1T. (although those ranges still needs to be mapped inside the device).
And considering the reporter is already using 32bit with 10T+ storage, I
doubt if it's really not worthy.
BTW, what would be the extra cost by converting page::index to u64?
I know tons of printk() would cause warning, but most 64bit systems
should not be affected anyway.
Thanks,
Qu
next prev parent reply other threads:[~2021-02-18 15:25 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-18 8:54 page->index limitation on 32bit system? Qu Wenruo
2021-02-18 12:15 ` Matthew Wilcox
2021-02-18 12:42 ` Qu Wenruo [this message]
2021-02-18 13:39 ` Matthew Wilcox
2021-02-19 0:37 ` Qu Wenruo
2021-02-19 16:12 ` Theodore Ts'o
2021-02-19 23:10 ` Qu Wenruo
2021-02-20 0:23 ` Matthew Wilcox
2021-02-22 0:19 ` Dave Chinner
2021-02-20 2:20 ` Erik Jensen
2021-02-20 3:40 ` Matthew Wilcox
2021-02-20 23:02 ` Erik Jensen
2021-02-20 23:22 ` Matthew Wilcox
2021-02-21 0:01 ` Erik Jensen
2021-02-21 17:15 ` Matthew Wilcox
2021-02-18 21:27 ` Erik Jensen
2021-02-19 14:22 ` Matthew Wilcox
2021-02-19 17:51 ` Matthew Wilcox
2021-02-19 23:13 ` Qu Wenruo
2021-02-22 1:48 ` Dave Chinner
2021-03-01 1:49 ` GWB
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=af1aac2f-e7dc-76f3-0b3a-4cb36b22247f@gmx.com \
--to=quwenruo.btrfs@gmx.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=willy@infradead.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