raid0 and buffers larger than PAGE_SIZE
I'm using raid0 under 2.2.16pre4 and I've just started observing a new failure mode that's completely preventing it from working: getblk(), and therefore refill_freelist(), is being called with a size greater than PAGE_SIZE. This is triggered by e2fsck on the /dev/md0, and it's probably been a while since the last e2fsck, so I don't know when the was actually introduced.
I'm using an Intel CPU, so PAGE_SIZE is 4K, but getblk() is being called with a size of 16K, which is (not coincidentally) my raid0 chunk size. It ends up in an infinite loop, as getblk() calls refill_freelist() forever until it succeeds, which it never does!
I'm not sure whether the bug is in raid0 (is setting a block device block size greater than PAGE_SIZE legal?), refill_freelist (is creating buffer heads that span multiple pages legal?), or something else entirely.... Help?!
Clues, anyone?
Signature · 7 lines
Chip Salzenberg - a.k.a. - <[email protected]> "I wanted to play hopscotch with the impenetrable mystery of existence, but he stepped in a wormhole and had to go in early." // MST3K -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux.eu.org/Linux-MM/
Hi,
Quoted 6 lines · Chip Salzenberg
I'm using raid0 under 2.2.16pre4 and I've just started observing a new failure mode that's completely preventing it from working:
getblk(), and thereforerefill_freelist(), is being called with a size greater thanPAGE_SIZE. This is triggered by e2fsck on the/dev/md0, and it's probably been a while since the last e2fsck, so I don't know when the was actually introduced.
getblk() with blocksize > PAGE_SIZE is completely illegal. Are you using a decent set of raid patches?
Cheers,
Stephen
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux.eu.org/Linux-MM/
According to Stephen C. Tweedie:
Quoted 1 line
getblk()with blocksize >PAGE_SIZEis completely illegal.
Well, that answers _that_ question.
Quoted 1 line
Are you using a decent set of raid patches?
No patches, and apparently not decent. :-( I looked around with google and on ftp.kernel.org, but I couldn't find anything current.
Can you spare a URL for a fellow programmer down on his luck?
Signature · 7 lines
Chip Salzenberg - a.k.a. - <[email protected]> "I wanted to play hopscotch with the impenetrable mystery of existence, but he stepped in a wormhole and had to go in early." // MST3K -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux.eu.org/Linux-MM/
Hi,
Quoted 11 lines · Chip Salzenberg
According to Stephen C. Tweedie:
Quoted 1 line
getblk()with blocksize >PAGE_SIZEis completely illegal.Well, that answers _that_ question.
Quoted 1 line
Are you using a decent set of raid patches?
No patches, and apparently not decent. :-( I looked around with google and on ftp.kernel.org, but I couldn't find anything current.
Can you spare a URL for a fellow programmer down on his luck?
If you've got a Red Hat 6.2 CD around, it's in the kernel srpm. Otherwise, check Ingo's home page: you'll find it all at
http://people.redhat.com/mingo/raid-patches/
Cheers,
Stephen
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux.eu.org/Linux-MM/
According to Stephen C. Tweedie:
Quoted 1 line
getblk()with blocksize >PAGE_SIZEis completely illegal.
I've recommended to Alan that he apply the below patch, which reverts a change in 2.2.16 that kills raid0 for me:
Index: drivers/block/md.c
*************** static int do_md_run (int minor, int rep *** 447,452 ****
factor = min = 1 << FACTOR_SHIFT(FACTOR((md_dev+minor)));
- md_blocksizes[minor] <<= FACTOR_SHIFT(FACTOR((md_dev+minor)));
-
for (i=0; i<md_dev[minor].nb_dev; i++)
if (md_dev[minor].devices[i].size<min)--- 447,450 ----
Signature · 7 lines
Chip Salzenberg - a.k.a. - <[email protected]> "I wanted to play hopscotch with the impenetrable mystery of existence, but he stepped in a wormhole and had to go in early." // MST3K -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux.eu.org/Linux-MM/