]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/block/deadline-iosched.c
Pull xpc-disengage into release branch
[linux-2.6-omap-h63xx.git] / drivers / block / deadline-iosched.c
index 7f79f3dd01655f111d88701bb48df642c72046a5..52a3ae5289a09a7af79081df5de2ec7e4c40ff26 100644 (file)
@@ -507,18 +507,15 @@ static int deadline_dispatch_requests(struct deadline_data *dd)
        const int reads = !list_empty(&dd->fifo_list[READ]);
        const int writes = !list_empty(&dd->fifo_list[WRITE]);
        struct deadline_rq *drq;
-       int data_dir, other_dir;
+       int data_dir;
 
        /*
         * batches are currently reads XOR writes
         */
-       drq = NULL;
-
-       if (dd->next_drq[READ])
-               drq = dd->next_drq[READ];
-
        if (dd->next_drq[WRITE])
                drq = dd->next_drq[WRITE];
+       else
+               drq = dd->next_drq[READ];
 
        if (drq) {
                /* we have a "next request" */
@@ -544,7 +541,6 @@ static int deadline_dispatch_requests(struct deadline_data *dd)
                        goto dispatch_writes;
 
                data_dir = READ;
-               other_dir = WRITE;
 
                goto dispatch_find_request;
        }
@@ -560,7 +556,6 @@ dispatch_writes:
                dd->starved = 0;
 
                data_dir = WRITE;
-               other_dir = READ;
 
                goto dispatch_find_request;
        }
@@ -711,18 +706,20 @@ static int deadline_init_queue(request_queue_t *q, elevator_t *e)
        if (!drq_pool)
                return -ENOMEM;
 
-       dd = kmalloc(sizeof(*dd), GFP_KERNEL);
+       dd = kmalloc_node(sizeof(*dd), GFP_KERNEL, q->node);
        if (!dd)
                return -ENOMEM;
        memset(dd, 0, sizeof(*dd));
 
-       dd->hash = kmalloc(sizeof(struct list_head)*DL_HASH_ENTRIES,GFP_KERNEL);
+       dd->hash = kmalloc_node(sizeof(struct list_head)*DL_HASH_ENTRIES,
+                               GFP_KERNEL, q->node);
        if (!dd->hash) {
                kfree(dd);
                return -ENOMEM;
        }
 
-       dd->drq_pool = mempool_create(BLKDEV_MIN_RQ, mempool_alloc_slab, mempool_free_slab, drq_pool);
+       dd->drq_pool = mempool_create_node(BLKDEV_MIN_RQ, mempool_alloc_slab,
+                                       mempool_free_slab, drq_pool, q->node);
        if (!dd->drq_pool) {
                kfree(dd->hash);
                kfree(dd);
@@ -758,7 +755,8 @@ static void deadline_put_request(request_queue_t *q, struct request *rq)
 }
 
 static int
-deadline_set_request(request_queue_t *q, struct request *rq, int gfp_mask)
+deadline_set_request(request_queue_t *q, struct request *rq, struct bio *bio,
+                    int gfp_mask)
 {
        struct deadline_data *dd = q->elevator->elevator_data;
        struct deadline_rq *drq;