Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[pandora-kernel.git] / drivers / md / linear.c
index 0ed7f6b..6cd2c31 100644 (file)
@@ -87,22 +87,6 @@ static int linear_mergeable_bvec(struct request_queue *q,
        return maxsectors << 9;
 }
 
-static void linear_unplug(struct request_queue *q)
-{
-       mddev_t *mddev = q->queuedata;
-       linear_conf_t *conf;
-       int i;
-
-       rcu_read_lock();
-       conf = rcu_dereference(mddev->private);
-
-       for (i=0; i < mddev->raid_disks; i++) {
-               struct request_queue *r_queue = bdev_get_queue(conf->disks[i].rdev->bdev);
-               blk_unplug(r_queue);
-       }
-       rcu_read_unlock();
-}
-
 static int linear_congested(void *data, int bits)
 {
        mddev_t *mddev = data;
@@ -224,17 +208,9 @@ static int linear_run (mddev_t *mddev)
        md_set_array_sectors(mddev, linear_size(mddev, 0, 0));
 
        blk_queue_merge_bvec(mddev->queue, linear_mergeable_bvec);
-       mddev->queue->unplug_fn = linear_unplug;
        mddev->queue->backing_dev_info.congested_fn = linear_congested;
        mddev->queue->backing_dev_info.congested_data = mddev;
-       md_integrity_register(mddev);
-       return 0;
-}
-
-static void free_conf(struct rcu_head *head)
-{
-       linear_conf_t *conf = container_of(head, linear_conf_t, rcu);
-       kfree(conf);
+       return md_integrity_register(mddev);
 }
 
 static int linear_add(mddev_t *mddev, mdk_rdev_t *rdev)
@@ -265,7 +241,7 @@ static int linear_add(mddev_t *mddev, mdk_rdev_t *rdev)
        md_set_array_sectors(mddev, linear_size(mddev, 0, 0));
        set_capacity(mddev->gendisk, mddev->array_sectors);
        revalidate_disk(mddev->gendisk);
-       call_rcu(&oldconf->rcu, free_conf);
+       kfree_rcu(oldconf, rcu);
        return 0;
 }