diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-11-26 12:50:39 +0300 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-11-26 12:50:42 +0300 | 
| commit | 16bc67edeb49b531940b2ba6c183780a1b5c472d (patch) | |
| tree | 71b4bc48e47e54f2c0b3126d8f81d2f31b707ea8 /drivers/md/raid1.c | |
| parent | f6630114d9198aa959ac95c131334c020038f253 (diff) | |
| parent | 047106adcc85e3023da210143a6ab8a55df9e0fc (diff) | |
| download | linux-16bc67edeb49b531940b2ba6c183780a1b5c472d.tar.xz | |
Merge branch 'sched/urgent' into sched/core
Merge reason: Pick up fixes that did not make it into .32.0
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/md/raid1.c')
| -rw-r--r-- | drivers/md/raid1.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index d1b9bd5fd4f6..a053423785c9 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -64,7 +64,7 @@ static void * r1bio_pool_alloc(gfp_t gfp_flags, void *data)  	/* allocate a r1bio with room for raid_disks entries in the bios array */  	r1_bio = kzalloc(size, gfp_flags); -	if (!r1_bio) +	if (!r1_bio && pi->mddev)  		unplug_slaves(pi->mddev);  	return r1_bio; @@ -1683,6 +1683,7 @@ static void raid1d(mddev_t *mddev)  				generic_make_request(bio);  			}  		} +		cond_resched();  	}  	if (unplug)  		unplug_slaves(mddev); @@ -1978,13 +1979,14 @@ static int run(mddev_t *mddev)  	conf->poolinfo = kmalloc(sizeof(*conf->poolinfo), GFP_KERNEL);  	if (!conf->poolinfo)  		goto out_no_mem; -	conf->poolinfo->mddev = mddev; +	conf->poolinfo->mddev = NULL;  	conf->poolinfo->raid_disks = mddev->raid_disks;  	conf->r1bio_pool = mempool_create(NR_RAID1_BIOS, r1bio_pool_alloc,  					  r1bio_pool_free,  					  conf->poolinfo);  	if (!conf->r1bio_pool)  		goto out_no_mem; +	conf->poolinfo->mddev = mddev;  	spin_lock_init(&conf->device_lock);  	mddev->queue->queue_lock = &conf->device_lock;  | 
