The main purpose of the Deadline scheduler is to guarantee a start service time for a request.
[1] The scheduler imposes a deadline on all I/O operations to prevent a starvation of requests.
A rough version of the scheduler was published on the Linux Kernel Mailing List by Axboe in January 2002.
Still, they may, but may degrade overall throughput by increasing the overall movement of drive heads (since sequencing happens within a batch and not between them).
Additionally, if the number of IOPs is high enough the batches will be executed in a timely fashion anyway.
The 'write_expire' has the same function as read_expire, but instead is used for write operations (grouped into separate batches from read requests).
If the application workload, however, is read-heavy (for example most HTTP or directory servers) with only an occasional write, decreased latency of average IOPs may be achieved by increasing this (so that more reads must be performed before a write batch is queued to disk).
Merging diverts operations from the current batch to the active one, decreasing "fairness" in order to increase throughput.
Front merges may still occur due to the cached 'last_merge' hint, but since that comes at basically zero cost, it is still performed.
This boolean simply disables front sector lookup when the I/O scheduler merging function is called.