Thread (4 messages) 4 messages, 3 authors, 2007-05-22

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.

Jeff 
quoted
-----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 disk 
quoted
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, we
might lose
quoted
bits.  That could still happen with the 4*2.75T 
arrangement, but is 
quoted
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 64bit 
arithmetic 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.

NeilBrown
quoted
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-17 
10:33:30.000000000 +1000
quoted
+++ ./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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help