On Thu, 2014-06-19 at 09:33 +0000, Cox, Alan wrote: > On Thu, 2014-06-19 at 10:30 +0100, Alan Cox wrote: > > The block code has 32bit cleanness problems with the iterator. This > > prevents things like partitioning a 32GB volume on a 32bit system. > > > > I hit this with a volume of exactly 32GB in size (easy to duplicate with > > virtual machines). Tracing at step by step through the kernel I found > > the problem lines in blkdev_read_iter which truncates the size value > > into a 32bit value when setting up the iterator. > > > > The hack below if applied "fixes" this and I think demonstrates that > > this is the problem spot. > > > > What I'm less clear on is what the correct fix for this should be. > > block: fix inability to partition large volumes > > From: Alan <alan@xxxxxxxxxxxxxxx> > > The block code has 32bit cleanness problems with the iterator. This > prevents things like partitioning a 32GB volume on a 32bit system. > > This is a simple initial "fix" that clips the problem cases so get > behaviour that is at least sane and trivially backportable. > > Signed-off-by: Alan Cox <alan@xxxxxxxxxxxxxxx> > --- > fs/block_dev.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fs/block_dev.c b/fs/block_dev.c > index 6d72746..bef2414 100644 > --- a/fs/block_dev.c > +++ b/fs/block_dev.c > @@ -1603,6 +1603,9 @@ static ssize_t blkdev_read_iter(struct kiocb > *iocb, struct iov_iter *to) > > size -= pos; > iov_iter_truncate(to, size); > + /* Fix up for 32bit boxes for now */ > + if (to->count < size) > + to->count = 0xFFFFFFFF; > return generic_file_read_iter(iocb, to); > } > > > --------------------------------------------------------------------- > Intel Corporation (UK) Limited > Registered No. 1134945 (England) > Registered Office: Pipers Way, Swindon SN3 1RJ > VAT No: 860 2173 47 > > This e-mail and any attachments may contain confidential material for > the sole use of the intended recipient(s). Any review or distribution > by others is strictly prohibited. If you are not the intended > recipient, please contact the sender and delete all copies. > NrybXǧv^){.n+{~^b^nrzh&Gh(階ݢj"mzޖfh~m Wow that's junk issued by an Exchange server ... Alan, really ... Do you have CONFIG_LBD turned on? That's supposed to let us go up to about 16TB before we run out of page index bits. If you do, we might have a variable that's int but should be sector_t somewhere. James -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html