]> git.neil.brown.name Git - history.git/commit
[PATCH] Fix Raid5/6 above 2 Terabytes
authorAndrew Morton <akpm@osdl.org>
Mon, 12 Apr 2004 08:01:30 +0000 (01:01 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 12 Apr 2004 08:01:30 +0000 (01:01 -0700)
commit4fbd14380484c466338108b59fbc04062c01f1df
tree87c2346ff4d8987efb55f47f4d45523c5590c33e
parentdfe2c6262c7cffaa5087d6562cacbbf406594df0
[PATCH] Fix Raid5/6 above 2 Terabytes

From: Evan Felix <evan.felix@pnl.gov>

Here is a patch that fixes a major issue in the raid5/6 code.  It seems
that the code:

logical_sector = bi->bi_sector & ~(STRIPE_SECTORS-1);
(sector_t)     = (sector_t)    & (constant)

that the right side of the & does not get extended correctly when the
constant is promoted to the sector_t type.  I have CONFIG_LBD turned on so
sector_t should be 64bits wide.  This fails to properly mask the value of
4294967296 (2TB/512) to 4294967296.  in my case it was coming out 0.  this
cause the loop following this code to read from 0 to 4294967296 blocks so
it could write one character.

As you might imagine this makes a format of a 3.5TB filesystem take a very
long time.
drivers/md/raid5.c
drivers/md/raid6main.c