*(__PTR) = __data; \ return ret; \ } STORE_FUNCTION(deadline_read_expire_store, &dd->fifo_expire[READ], 0, INT_MAX, 1); STORE_FUNCTION(deadline_write_expire_store, &dd->fifo_expire[WRITE], 0, INT_MAX, 1); STORE_FUNCTION(deadline_writes_starved_store, &dd->writes_starved, INT_MIN, INT_MAX, 0); STORE_FUNCTION(deadline_front_merges_store, &dd->front_merges, 0, 1, 0); STORE_FUNCTION(deadline_fifo_batch_store, &dd->fifo_batch, 0, INT_MAX, 0); #undef STORE_FUNCTION #define DD_ATTR(name) \ __ATTR(name, S_IRUGO|S_IWUSR, deadline_##name##_show, \ deadline_##name##_store) static struct elv_fs_entry deadline_attrs[] = { DD_ATTR(read_expire), DD_ATTR(write_expire), DD_ATTR(writes_starved), DD_ATTR(front_merges), DD_ATTR(fifo_batch), __ATTR_NULL }; static struct elevator_type iosched_deadline = { .ops = { .elevator_merge_fn = deadline_merge, .elevator_merged_fn = deadline_merged_request, .elevator_merge_req_fn = deadline_merged_requests, .elevator_dispatch_fn = deadline_dispatch_requests, .elevator_add_req_fn = deadline_add_request, .elevator_former_req_fn = elv_rb_former_request,
*(__PTR) = msecs_to_jiffies(__data); \ else \ *(__PTR) = __data; \ return ret; \ } STORE_FUNCTION(sio_sync_expire_store, &sd->fifo_expire[SYNC], 0, INT_MAX, 1); STORE_FUNCTION(sio_async_expire_store, &sd->fifo_expire[ASYNC], 0, INT_MAX, 1); STORE_FUNCTION(sio_fifo_batch_store, &sd->fifo_batch, 0, INT_MAX, 0); #undef STORE_FUNCTION #define DD_ATTR(name) \ __ATTR(name, S_IRUGO|S_IWUSR, sio_##name##_show, \ sio_##name##_store) static struct elv_fs_entry sio_attrs[] = { DD_ATTR(sync_expire), DD_ATTR(async_expire), DD_ATTR(fifo_batch), __ATTR_NULL }; static struct elevator_type iosched_sio = { .ops = { .elevator_merge_req_fn = sio_merged_requests, .elevator_dispatch_fn = sio_dispatch_requests, .elevator_add_req_fn = sio_add_request, .elevator_queue_empty_fn = sio_queue_empty, .elevator_former_req_fn = sio_former_request, .elevator_latter_req_fn = sio_latter_request, .elevator_init_fn = sio_init_queue, .elevator_exit_fn = sio_exit_queue,
else \ *(__PTR) = __data; \ return ret; \ } STORE_FUNCTION(vr_sync_expire_store, &vd->fifo_expire[SYNC], 0, INT_MAX, 1); STORE_FUNCTION(vr_async_expire_store, &vd->fifo_expire[ASYNC], 0, INT_MAX, 1); STORE_FUNCTION(vr_fifo_batch_store, &vd->fifo_batch, 0, INT_MAX, 0); STORE_FUNCTION(vr_rev_penalty_store, &vd->rev_penalty, 0, INT_MAX, 0); #undef STORE_FUNCTION #define DD_ATTR(name) \ __ATTR(name, S_IRUGO|S_IWUSR, vr_##name##_show, \ vr_##name##_store) static struct elv_fs_entry vr_attrs[] = { DD_ATTR(sync_expire), DD_ATTR(async_expire), DD_ATTR(fifo_batch), DD_ATTR(rev_penalty), __ATTR_NULL }; static struct elevator_type iosched_vr = { .ops = { .elevator_merge_fn = vr_merge, .elevator_merged_fn = vr_merged_request, .elevator_merge_req_fn = vr_merged_requests, .elevator_dispatch_fn = vr_dispatch_requests, .elevator_add_req_fn = vr_add_request, .elevator_queue_empty_fn = vr_queue_empty, .elevator_former_req_fn = elv_rb_former_request,
return ret; \ } STORE_FUNCTION(sio_sync_read_expire_store, &sd->fifo_expire[SYNC][READ], 0, INT_MAX, 1); STORE_FUNCTION(sio_sync_write_expire_store, &sd->fifo_expire[SYNC][WRITE], 0, INT_MAX, 1); STORE_FUNCTION(sio_async_read_expire_store, &sd->fifo_expire[ASYNC][READ], 0, INT_MAX, 1); STORE_FUNCTION(sio_async_write_expire_store, &sd->fifo_expire[ASYNC][WRITE], 0, INT_MAX, 1); STORE_FUNCTION(sio_fifo_batch_store, &sd->fifo_batch, 0, INT_MAX, 0); STORE_FUNCTION(sio_writes_starved_store, &sd->writes_starved, 0, INT_MAX, 0); #undef STORE_FUNCTION #define DD_ATTR(name) \ __ATTR(name, S_IRUGO|S_IWUSR, sio_##name##_show, \ sio_##name##_store) static struct elv_fs_entry sio_attrs[] = { DD_ATTR(sync_read_expire), DD_ATTR(sync_write_expire), DD_ATTR(async_read_expire), DD_ATTR(async_write_expire), DD_ATTR(fifo_batch), DD_ATTR(writes_starved), __ATTR_NULL }; static struct elevator_type iosched_sio = { .ops = { .elevator_merge_req_fn = sio_merged_requests, .elevator_dispatch_fn = sio_dispatch_requests, .elevator_add_req_fn = sio_add_request, .elevator_queue_empty_fn = sio_queue_empty, .elevator_former_req_fn = sio_former_request,