|
@@ -291,3 +291,114 @@ queue_rq_affinity_store(struct request_queue *q, const char *page, size_t count)
|
|
unsigned long val;
|
|
unsigned long val;
|
|
|
|
|
|
ret = queue_var_store(&val, page, count);
|
|
ret = queue_var_store(&val, page, count);
|
|
|
|
+ if (ret < 0)
|
|
|
|
+ return ret;
|
|
|
|
+
|
|
|
|
+ spin_lock_irq(q->queue_lock);
|
|
|
|
+ if (val == 2) {
|
|
|
|
+ queue_flag_set(QUEUE_FLAG_SAME_COMP, q);
|
|
|
|
+ queue_flag_set(QUEUE_FLAG_SAME_FORCE, q);
|
|
|
|
+ } else if (val == 1) {
|
|
|
|
+ queue_flag_set(QUEUE_FLAG_SAME_COMP, q);
|
|
|
|
+ queue_flag_clear(QUEUE_FLAG_SAME_FORCE, q);
|
|
|
|
+ } else if (val == 0) {
|
|
|
|
+ queue_flag_clear(QUEUE_FLAG_SAME_COMP, q);
|
|
|
|
+ queue_flag_clear(QUEUE_FLAG_SAME_FORCE, q);
|
|
|
|
+ }
|
|
|
|
+ spin_unlock_irq(q->queue_lock);
|
|
|
|
+#endif
|
|
|
|
+ return ret;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_requests_entry = {
|
|
|
|
+ .attr = {.name = "nr_requests", .mode = S_IRUGO | S_IWUSR },
|
|
|
|
+ .show = queue_requests_show,
|
|
|
|
+ .store = queue_requests_store,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_ra_entry = {
|
|
|
|
+ .attr = {.name = "read_ahead_kb", .mode = S_IRUGO | S_IWUSR },
|
|
|
|
+ .show = queue_ra_show,
|
|
|
|
+ .store = queue_ra_store,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_max_sectors_entry = {
|
|
|
|
+ .attr = {.name = "max_sectors_kb", .mode = S_IRUGO | S_IWUSR },
|
|
|
|
+ .show = queue_max_sectors_show,
|
|
|
|
+ .store = queue_max_sectors_store,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_max_hw_sectors_entry = {
|
|
|
|
+ .attr = {.name = "max_hw_sectors_kb", .mode = S_IRUGO },
|
|
|
|
+ .show = queue_max_hw_sectors_show,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_max_segments_entry = {
|
|
|
|
+ .attr = {.name = "max_segments", .mode = S_IRUGO },
|
|
|
|
+ .show = queue_max_segments_show,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_max_integrity_segments_entry = {
|
|
|
|
+ .attr = {.name = "max_integrity_segments", .mode = S_IRUGO },
|
|
|
|
+ .show = queue_max_integrity_segments_show,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_max_segment_size_entry = {
|
|
|
|
+ .attr = {.name = "max_segment_size", .mode = S_IRUGO },
|
|
|
|
+ .show = queue_max_segment_size_show,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_iosched_entry = {
|
|
|
|
+ .attr = {.name = "scheduler", .mode = S_IRUGO | S_IWUSR },
|
|
|
|
+ .show = elv_iosched_show,
|
|
|
|
+ .store = elv_iosched_store,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_hw_sector_size_entry = {
|
|
|
|
+ .attr = {.name = "hw_sector_size", .mode = S_IRUGO },
|
|
|
|
+ .show = queue_logical_block_size_show,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_logical_block_size_entry = {
|
|
|
|
+ .attr = {.name = "logical_block_size", .mode = S_IRUGO },
|
|
|
|
+ .show = queue_logical_block_size_show,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_physical_block_size_entry = {
|
|
|
|
+ .attr = {.name = "physical_block_size", .mode = S_IRUGO },
|
|
|
|
+ .show = queue_physical_block_size_show,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_io_min_entry = {
|
|
|
|
+ .attr = {.name = "minimum_io_size", .mode = S_IRUGO },
|
|
|
|
+ .show = queue_io_min_show,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_io_opt_entry = {
|
|
|
|
+ .attr = {.name = "optimal_io_size", .mode = S_IRUGO },
|
|
|
|
+ .show = queue_io_opt_show,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_discard_granularity_entry = {
|
|
|
|
+ .attr = {.name = "discard_granularity", .mode = S_IRUGO },
|
|
|
|
+ .show = queue_discard_granularity_show,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_discard_max_entry = {
|
|
|
|
+ .attr = {.name = "discard_max_bytes", .mode = S_IRUGO },
|
|
|
|
+ .show = queue_discard_max_show,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_discard_zeroes_data_entry = {
|
|
|
|
+ .attr = {.name = "discard_zeroes_data", .mode = S_IRUGO },
|
|
|
|
+ .show = queue_discard_zeroes_data_show,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_write_same_max_entry = {
|
|
|
|
+ .attr = {.name = "write_same_max_bytes", .mode = S_IRUGO },
|
|
|
|
+ .show = queue_write_same_max_show,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct queue_sysfs_entry queue_nonrot_entry = {
|
|
|
|
+ .attr = {.name = "rotational", .mode = S_IRUGO | S_IWUSR },
|
|
|
|
+ .show = queue_show_nonrot,
|