ARM64: dts: rk3366-tb: disable vdd_arm when deep sleep
[firefly-linux-kernel-4.4.55.git] / block / deadline-iosched.c
index ba19a3afab7929cf3ff0857683ccaef40a007a77..a753df2b3fc29324a850442966b15199bc932508 100644 (file)
@@ -106,7 +106,7 @@ deadline_add_request(struct request_queue *q, struct request *rq)
        /*
         * set expire time and add to fifo list
         */
-       rq_set_fifo_time(rq, jiffies + dd->fifo_expire[data_dir]);
+       rq->fifo_time = jiffies + dd->fifo_expire[data_dir];
        list_add_tail(&rq->queuelist, &dd->fifo_list[data_dir]);
 }
 
@@ -174,9 +174,9 @@ deadline_merged_requests(struct request_queue *q, struct request *req,
         * and move into next position (next will be deleted) in fifo
         */
        if (!list_empty(&req->queuelist) && !list_empty(&next->queuelist)) {
-               if (time_before(rq_fifo_time(next), rq_fifo_time(req))) {
+               if (time_before(next->fifo_time, req->fifo_time)) {
                        list_move(&req->queuelist, &next->queuelist);
-                       rq_set_fifo_time(req, rq_fifo_time(next));
+                       req->fifo_time = next->fifo_time;
                }
        }
 
@@ -230,7 +230,7 @@ static inline int deadline_check_fifo(struct deadline_data *dd, int ddir)
        /*
         * rq is expired!
         */
-       if (time_after_eq(jiffies, rq_fifo_time(rq)))
+       if (time_after_eq(jiffies, rq->fifo_time))
                return 1;
 
        return 0;
@@ -337,14 +337,22 @@ static void deadline_exit_queue(struct elevator_queue *e)
 /*
  * initialize elevator private data (deadline_data).
  */
-static int deadline_init_queue(struct request_queue *q)
+static int deadline_init_queue(struct request_queue *q, struct elevator_type *e)
 {
        struct deadline_data *dd;
+       struct elevator_queue *eq;
 
-       dd = kmalloc_node(sizeof(*dd), GFP_KERNEL | __GFP_ZERO, q->node);
-       if (!dd)
+       eq = elevator_alloc(q, e);
+       if (!eq)
                return -ENOMEM;
 
+       dd = kzalloc_node(sizeof(*dd), GFP_KERNEL, q->node);
+       if (!dd) {
+               kobject_put(&eq->kobj);
+               return -ENOMEM;
+       }
+       eq->elevator_data = dd;
+
        INIT_LIST_HEAD(&dd->fifo_list[READ]);
        INIT_LIST_HEAD(&dd->fifo_list[WRITE]);
        dd->sort_list[READ] = RB_ROOT;
@@ -355,7 +363,9 @@ static int deadline_init_queue(struct request_queue *q)
        dd->front_merges = 1;
        dd->fifo_batch = fifo_batch;
 
-       q->elevator->elevator_data = dd;
+       spin_lock_irq(q->queue_lock);
+       q->elevator = eq;
+       spin_unlock_irq(q->queue_lock);
        return 0;
 }