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) 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). As usual, the best solution is for people to stop buying 32-bit systems.