diff options
Diffstat (limited to 'drivers/md/linear.c')
| -rw-r--r-- | drivers/md/linear.c | 36 | 
1 files changed, 16 insertions, 20 deletions
diff --git a/drivers/md/linear.c b/drivers/md/linear.c index 09437e958235..7e0e057db9a7 100644 --- a/drivers/md/linear.c +++ b/drivers/md/linear.c @@ -159,7 +159,8 @@ static linear_conf_t *linear_conf(mddev_t *mddev, int raid_disks)  		sector_t sectors;  		if (j < 0 || j >= raid_disks || disk->rdev) { -			printk("linear: disk numbering problem. Aborting!\n"); +			printk(KERN_ERR "md/linear:%s: disk numbering problem. Aborting!\n", +			       mdname(mddev));  			goto out;  		} @@ -187,7 +188,8 @@ static linear_conf_t *linear_conf(mddev_t *mddev, int raid_disks)  	}  	if (cnt != raid_disks) { -		printk("linear: not enough drives present. Aborting!\n"); +		printk(KERN_ERR "md/linear:%s: not enough drives present. Aborting!\n", +		       mdname(mddev));  		goto out;  	} @@ -282,29 +284,21 @@ static int linear_stop (mddev_t *mddev)  	rcu_barrier();  	blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/  	kfree(conf); +	mddev->private = NULL;  	return 0;  } -static int linear_make_request (struct request_queue *q, struct bio *bio) +static int linear_make_request (mddev_t *mddev, struct bio *bio)  { -	const int rw = bio_data_dir(bio); -	mddev_t *mddev = q->queuedata;  	dev_info_t *tmp_dev;  	sector_t start_sector; -	int cpu;  	if (unlikely(bio_rw_flagged(bio, BIO_RW_BARRIER))) {  		md_barrier_request(mddev, bio);  		return 0;  	} -	cpu = part_stat_lock(); -	part_stat_inc(cpu, &mddev->gendisk->part0, ios[rw]); -	part_stat_add(cpu, &mddev->gendisk->part0, sectors[rw], -		      bio_sectors(bio)); -	part_stat_unlock(); -  	rcu_read_lock();  	tmp_dev = which_dev(mddev, bio->bi_sector);  	start_sector = tmp_dev->end_sector - tmp_dev->rdev->sectors; @@ -314,12 +308,14 @@ static int linear_make_request (struct request_queue *q, struct bio *bio)  		     || (bio->bi_sector < start_sector))) {  		char b[BDEVNAME_SIZE]; -		printk("linear_make_request: Sector %llu out of bounds on " -			"dev %s: %llu sectors, offset %llu\n", -			(unsigned long long)bio->bi_sector, -			bdevname(tmp_dev->rdev->bdev, b), -			(unsigned long long)tmp_dev->rdev->sectors, -			(unsigned long long)start_sector); +		printk(KERN_ERR +		       "md/linear:%s: make_request: Sector %llu out of bounds on " +		       "dev %s: %llu sectors, offset %llu\n", +		       mdname(mddev), +		       (unsigned long long)bio->bi_sector, +		       bdevname(tmp_dev->rdev->bdev, b), +		       (unsigned long long)tmp_dev->rdev->sectors, +		       (unsigned long long)start_sector);  		rcu_read_unlock();  		bio_io_error(bio);  		return 0; @@ -336,9 +332,9 @@ static int linear_make_request (struct request_queue *q, struct bio *bio)  		bp = bio_split(bio, end_sector - bio->bi_sector); -		if (linear_make_request(q, &bp->bio1)) +		if (linear_make_request(mddev, &bp->bio1))  			generic_make_request(&bp->bio1); -		if (linear_make_request(q, &bp->bio2)) +		if (linear_make_request(mddev, &bp->bio2))  			generic_make_request(&bp->bio2);  		bio_pair_release(bp);  		return 0;  |