On Tuesday January 23, [EMAIL PROTECTED] wrote:
>
> This patch will almost certainly fix the problem, though I would like
> to completely understand it first....
Of course, that patch didn't compile.... The "GFP_IO" should have been
"GFP_NOIO".
As below.
NeilBrown
--------------------------
Avoid possible malloc deadlock in raid5.
Due to reports of raid5 hanging when growing the stripe cache,
it is best to use GFP_IO for those allocation. We would rather
fail than deadlock.
Signed-off-by: Neil Brown <[EMAIL PROTECTED]>
### Diffstat output
./drivers/md/raid5.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff .prev/drivers/md/raid5.c ./drivers/md/raid5.c
--- .prev/drivers/md/raid5.c 2007-01-23 09:44:22.000000000 +1100
+++ ./drivers/md/raid5.c 2007-01-23 09:44:43.000000000 +1100
@@ -205,7 +205,7 @@ static int grow_buffers(struct stripe_he
for (i=0; i<num; i++) {
struct page *page;
- if (!(page = alloc_page(GFP_KERNEL))) {
+ if (!(page = alloc_page(GFP_NOIO))) {
return 1;
}
sh->dev[i].page = page;
@@ -321,7 +321,7 @@ static struct stripe_head *get_active_st
static int grow_one_stripe(raid5_conf_t *conf)
{
struct stripe_head *sh;
- sh = kmem_cache_alloc(conf->slab_cache, GFP_KERNEL);
+ sh = kmem_cache_alloc(conf->slab_cache, GFP_NOIO);
if (!sh)
return 0;
memset(sh, 0, sizeof(*sh) + (conf->raid_disks-1)*sizeof(struct r5dev));
-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html