RE: Software raid0 will crash the file-system, when each disk is 5TB
From: Jeff Zheng <hidden>
Date: 2007-05-17 22:55:51
Also in:
linux-fsdevel, lkml
Fix confirmed, filled the whole 11T hard disk, without crashing. I presume this would go into 2.6.22 Thanks again. Jeff
-----Original Message----- From: linux-raid-owner@vger.kernel.org [mailto:linux-raid-owner@vger.kernel.org] On Behalf Of Jeff Zheng Sent: Thursday, 17 May 2007 5:39 p.m. To: Neil Brown; david@lang.hm; Michal Piotrowski; Ingo Molnar; linux-raid@vger.kernel.org; linux-kernel@vger.kernel.org; linux-fsdevel@vger.kernel.org Subject: RE: Software raid0 will crash the file-system, when each disk is 5TB Yeah, seems you've locked it down, :D. I've written 600GB of data now, and anything is still fine. Will let it run overnight, and fill the whole 11T. I'll post the result tomorrow Thanks a lot though. Jeffquoted
-----Original Message----- From: Neil Brown [mailto:neilb@suse.de] Sent: Thursday, 17 May 2007 5:31 p.m. To: david@lang.hm; Jeff Zheng; Michal Piotrowski; Ingo Molnar; linux-raid@vger.kernel.org; linux-kernel@vger.kernel.org; linux-fsdevel@vger.kernel.org Subject: RE: Software raid0 will crash the file-system,when each diskquoted
is 5TB On Thursday May 17, neilb@suse.de wrote:quoted
Uhm, I just noticed something. 'chunk' is unsigned long, and when it gets shifted up, wemight losequoted
bits. That could still happen with the 4*2.75Tarrangement, but isquoted
quoted
much more likely in the 2*5.5T arrangement.Actually, it cannot be a problem with the 4*2.75T arrangement. chuck << chunksize_bits will not exceed the size of the underlying device *in*kilobytes*. In that case that is 0xAE9EC800 which will git in a 32bit long. We don't double it to make sectors until after we add zone->dev_offset, which is "sector_t" and so 64bitarithmetic is used.quoted
So I'm quite certain this bug will cause exactly the problems experienced!!quoted
Jeff, can you try this patch?Don't bother about the other tests I mentioned, just try this one. Thanks. NeilBrownquoted
Signed-off-by: Neil Brown <redacted> ### Diffstat output ./drivers/md/raid0.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff .prev/drivers/md/raid0.c ./drivers/md/raid0.c--- .prev/drivers/md/raid0.c 2007-05-1710:33:30.000000000 +1000quoted
+++ ./drivers/md/raid0.c 2007-05-17 15:02:15.000000000 +1000@@ -475,7 +475,7 @@ static int raid0_make_request (request_q x = block >> chunksize_bits; tmp_dev = zone->dev[sector_div(x, zone->nb_dev)]; } - rsect = (((chunk << chunksize_bits) + zone->dev_offset)<<1) + rsect = ((((sector_t)chunk << chunksize_bits) + +zone->dev_offset)<<1) + sect_in_chunk; bio->bi_bdev = tmp_dev->bdev;- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html