[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20191004124325.GB11046@google.com>
Date: Fri, 4 Oct 2019 05:43:25 -0700
From: Michel Lespinasse <walken@...gle.com>
To: Matthew Wilcox <willy@...radead.org>
Cc: Davidlohr Bueso <dave@...olabs.net>, akpm@...ux-foundation.org,
peterz@...radead.org, linux-kernel@...r.kernel.org,
linux-mm@...ck.org, dri-devel@...ts.freedesktop.org,
linux-rdma@...r.kernel.org
Subject: Re: [PATCH -next 00/11] lib/interval-tree: move to half closed
intervals
On Thu, Oct 03, 2019 at 01:32:50PM -0700, Matthew Wilcox wrote:
> On Thu, Oct 03, 2019 at 01:18:47PM -0700, Davidlohr Bueso wrote:
> > It has been discussed[1,2] that almost all users of interval trees would better
> > be served if the intervals were actually not [a,b], but instead [a, b). This
>
> So how does a user represent a range from ULONG_MAX to ULONG_MAX now?
>
> I think the problem is that large parts of the kernel just don't consider
> integer overflow. Because we write in C, it's natural to write:
>
> for (i = start; i < end; i++)
>
> and just assume that we never need to hit ULONG_MAX or UINT_MAX.
> If we're storing addresses, that's generally true -- most architectures
> don't allow addresses in the -PAGE_SIZE to ULONG_MAX range (or they'd
> have trouble with PTR_ERR). If you're looking at file sizes, that's
> not true on 32-bit machines, and we've definitely seen filesystem bugs
> with files nudging up on 16TB (on 32 bit with 4k page size). Or block
> driver bugs with similarly sized block devices.
>
> So, yeah, easier to use. But damning corner cases.
Yeah, I wanted to ask - is the case where pgoff == ULONG_MAX (i.e.,
last block of a file that is exactly 16TB) currently supported on
32-bit archs ?
I have no idea if I am supposed to care about this or not...
--
Michel "Walken" Lespinasse
A program is never fully debugged until the last user dies.
Powered by blists - more mailing lists