[dm-devel] 2 TB wraparound on 32 bit host

James Bottomley James.Bottomley at HansenPartnership.com
Sat Jun 12 16:03:18 UTC 2010


On Sat, 2010-06-12 at 11:45 -0400, Phillip Susi wrote:
> On 06/11/2010 05:16 PM, James Bottomley wrote:
> > So best guess is that CONFIG_LBDAF isn't set.  This would make all
> > sector_t counts wrap at 2TB (32 bits worth of 512 bytes).  It would be
> > rather a daft thing for a distribution not to have set, though ...
> 
> Bingo, thanks.  It doesn't seem to be set on this machine running the 
> amd64 2.6.32 lucid build which also appears to suffer the same problem. 

So is this a default kernel or did you build your own ... because if
it's a vanilla ubuntu kernel, not setting this config option would be
pretty embarrassing (not to mention annoy a lot of users)?

>   If this config option isn't set though, shouldn't the kernel fail 
> calls like llseek() that try to exceed the limit, rather than silently 
> wrap around to the wrong address?

Not really ... it's defaulted to y; only people who know what they're
doing should set it to N.  These people are mostly embedded and will
never connect > 2TB devices to their system, so checking is a waste of
time and space for them.  Plus making the checks exhaustive and
foolproof is just about impossible given that we alter the underlying
size of sector_t and wrap around without warning is the C default.

James





More information about the dm-devel mailing list