blk-rq-qos: make rq_qos_add and rq_qos_del more useful
[linux-2.6-microblaze.git] / block / blk-iolatency.c
index b55eac2..1c394bd 100644 (file)
@@ -757,24 +757,18 @@ static void blkiolatency_enable_work_fn(struct work_struct *work)
 
 int blk_iolatency_init(struct gendisk *disk)
 {
-       struct request_queue *q = disk->queue;
        struct blk_iolatency *blkiolat;
-       struct rq_qos *rqos;
        int ret;
 
        blkiolat = kzalloc(sizeof(*blkiolat), GFP_KERNEL);
        if (!blkiolat)
                return -ENOMEM;
 
-       rqos = &blkiolat->rqos;
-       rqos->id = RQ_QOS_LATENCY;
-       rqos->ops = &blkcg_iolatency_ops;
-       rqos->q = q;
-
-       ret = rq_qos_add(q, rqos);
+       ret = rq_qos_add(&blkiolat->rqos, disk, RQ_QOS_LATENCY,
+                        &blkcg_iolatency_ops);
        if (ret)
                goto err_free;
-       ret = blkcg_activate_policy(q, &blkcg_policy_iolatency);
+       ret = blkcg_activate_policy(disk->queue, &blkcg_policy_iolatency);
        if (ret)
                goto err_qos_del;
 
@@ -784,7 +778,7 @@ int blk_iolatency_init(struct gendisk *disk)
        return 0;
 
 err_qos_del:
-       rq_qos_del(q, rqos);
+       rq_qos_del(&blkiolat->rqos);
 err_free:
        kfree(blkiolat);
        return ret;