1, INT_MAX); STORE_FUNCTION(row_reg_starv_limit_store, &rowd->reg_prio_starvation.starvation_limit, 1, INT_MAX); STORE_FUNCTION(row_low_starv_limit_store, &rowd->low_prio_starvation.starvation_limit, 1, INT_MAX); #undef STORE_FUNCTION #define ROW_ATTR(name) \ __ATTR(name, S_IRUGO|S_IWUSR, row_##name##_show, \ row_##name##_store) static struct elv_fs_entry row_attrs[] = { ROW_ATTR(hp_read_quantum), ROW_ATTR(rp_read_quantum), ROW_ATTR(hp_swrite_quantum), ROW_ATTR(rp_swrite_quantum), ROW_ATTR(rp_write_quantum), ROW_ATTR(lp_read_quantum), ROW_ATTR(lp_swrite_quantum), ROW_ATTR(rd_idle_data), ROW_ATTR(rd_idle_data_freq), ROW_ATTR(reg_starv_limit), ROW_ATTR(low_starv_limit), __ATTR_NULL }; static struct elevator_type iosched_row = { .ops = {
INT_MAX, 0); STORE_FUNCTION(row_lp_swrite_quantum_store, &rowd->row_queues[ROWQ_PRIO_LOW_SWRITE].disp_quantum, 0, INT_MAX, 1); STORE_FUNCTION(row_read_idle_store, &rowd->read_idle.idle_time, 1, INT_MAX, 1); STORE_FUNCTION(row_read_idle_freq_store, &rowd->read_idle.freq, 1, INT_MAX, 1); #undef STORE_FUNCTION #define ROW_ATTR(name) \ __ATTR(name, S_IRUGO|S_IWUSR, row_##name##_show, \ row_##name##_store) static struct elv_fs_entry row_attrs[] = { ROW_ATTR(hp_read_quantum), ROW_ATTR(rp_read_quantum), ROW_ATTR(hp_swrite_quantum), ROW_ATTR(rp_swrite_quantum), ROW_ATTR(rp_write_quantum), ROW_ATTR(lp_read_quantum), ROW_ATTR(lp_swrite_quantum), ROW_ATTR(read_idle), ROW_ATTR(read_idle_freq), __ATTR_NULL }; static struct elevator_type iosched_row = { .ops = { .elevator_merge_req_fn = row_merged_requests, .elevator_dispatch_fn = row_dispatch_requests,
STORE_FUNCTION(row_lp_swrite_quantum_store, &rowd->row_queues[ROWQ_PRIO_LOW_SWRITE].disp_quantum, 1, INT_MAX, 0); STORE_FUNCTION(row_rd_idle_data_store, &rowd->rd_idle_data.idle_time_ms, 1, INT_MAX, 0); STORE_FUNCTION(row_rd_idle_data_freq_store, &rowd->rd_idle_data.freq_ms, 1, INT_MAX, 0); #undef STORE_FUNCTION #define ROW_ATTR(name) \ __ATTR(name, S_IRUGO|S_IWUSR, row_##name##_show, \ row_##name##_store) static struct elv_fs_entry row_attrs[] = { ROW_ATTR(hp_read_quantum), ROW_ATTR(rp_read_quantum), ROW_ATTR(hp_swrite_quantum), ROW_ATTR(rp_swrite_quantum), ROW_ATTR(rp_write_quantum), ROW_ATTR(lp_read_quantum), ROW_ATTR(lp_swrite_quantum), ROW_ATTR(rd_idle_data), ROW_ATTR(rd_idle_data_freq), __ATTR_NULL }; static struct elevator_type iosched_row = { .ops = { .elevator_merge_req_fn = row_merged_requests, .elevator_dispatch_fn = row_dispatch_requests,