Merge commit '3ff195b011d7decf501a4d55aeed312731094796' into for-linus
[sfrench/cifs-2.6.git] / drivers / md / linear.c
index 09437e958235e469c75aaab913d6b651ccde9f64..7e0e057db9a704740220e032a1592ceb0f94f9b5 100644 (file)
@@ -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;