X-Git-Url: https://git.stricted.de/?a=blobdiff_plain;f=block%2Fnoop-iosched.c;h=3de89d4690f3bf3e0d9abec1976a379b5dc171e5;hb=a03fb26067247e8a77183d596cb62ad698290783;hp=5d1bf70e33d5a04a5fc994c8a8cb0c9ecdbf0900;hpb=879060d5745250c6f38304fd548d42b76f9df093;p=GitHub%2Fmt8127%2Fandroid_kernel_alcatel_ttab.git diff --git a/block/noop-iosched.c b/block/noop-iosched.c index 5d1bf70e33d5..3de89d4690f3 100644 --- a/block/noop-iosched.c +++ b/block/noop-iosched.c @@ -59,16 +59,27 @@ noop_latter_request(struct request_queue *q, struct request *rq) return list_entry(rq->queuelist.next, struct request, queuelist); } -static int noop_init_queue(struct request_queue *q) +static int noop_init_queue(struct request_queue *q, struct elevator_type *e) { struct noop_data *nd; + struct elevator_queue *eq; + + eq = elevator_alloc(q, e); + if (!eq) + return -ENOMEM; nd = kmalloc_node(sizeof(*nd), GFP_KERNEL, q->node); - if (!nd) + if (!nd) { + kobject_put(&eq->kobj); return -ENOMEM; + } + eq->elevator_data = nd; INIT_LIST_HEAD(&nd->queue); - q->elevator->elevator_data = nd; + + spin_lock_irq(q->queue_lock); + q->elevator = eq; + spin_unlock_irq(q->queue_lock); return 0; }