4 #include <linux/blkdev.h>
5 #include <linux/elevator.h>
7 #include <linux/module.h>
8 #include <linux/init.h>
11 * See if we can find a request that this buffer can be coalesced with.
13 static int elevator_noop_merge(request_queue_t
*q
, struct request
**req
,
18 ret
= elv_try_last_merge(q
, bio
);
19 if (ret
!= ELEVATOR_NO_MERGE
)
25 static void elevator_noop_merge_requests(request_queue_t
*q
, struct request
*req
,
28 list_del_init(&next
->queuelist
);
31 static void elevator_noop_add_request(request_queue_t
*q
, struct request
*rq
)
33 elv_dispatch_add_tail(q
, rq
);
36 * new merges must not precede this barrier
38 if (rq
->flags
& REQ_HARDBARRIER
)
40 else if (!q
->last_merge
)
44 static int elevator_noop_dispatch(request_queue_t
*q
, int force
)
49 static struct elevator_type elevator_noop
= {
51 .elevator_merge_fn
= elevator_noop_merge
,
52 .elevator_merge_req_fn
= elevator_noop_merge_requests
,
53 .elevator_dispatch_fn
= elevator_noop_dispatch
,
54 .elevator_add_req_fn
= elevator_noop_add_request
,
56 .elevator_name
= "noop",
57 .elevator_owner
= THIS_MODULE
,
60 static int __init
noop_init(void)
62 return elv_register(&elevator_noop
);
65 static void __exit
noop_exit(void)
67 elv_unregister(&elevator_noop
);
70 module_init(noop_init
);
71 module_exit(noop_exit
);
74 MODULE_AUTHOR("Jens Axboe");
75 MODULE_LICENSE("GPL");
76 MODULE_DESCRIPTION("No-op IO scheduler");