[PATCH] block: export SSD/non-rotational queue flag through sysfs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx>Subject: [PATCH] block: export SSD/non-rotational queue flag through sysfs
For some devices (i.e. CFA ATA) we can't reliably detect whetherthe device is of rotational or non-rotational type so we need toleave the final decision about this setting to the user-space.
Suggested-by: Alan Cox <alan@xxxxxxxxxxxxxxxxxxx>Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx>--- block/blk-sysfs.c |   30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-)
Index: b/block/blk-sysfs.c===================================================================--- a/block/blk-sysfs.c+++ b/block/blk-sysfs.c@@ -130,6 +130,27 @@ static ssize_t queue_max_hw_sectors_show 	return queue_var_show(max_hw_sectors_kb, (page)); } +static ssize_t queue_nonrot_show(struct request_queue *q, char *page)+{+	return queue_var_show(blk_queue_nonrot(q), page);+}++static ssize_t queue_nonrot_store(struct request_queue *q, const char *page,+				  size_t count)+{+	unsigned long nm;+	ssize_t ret = queue_var_store(&nm, page, count);++	spin_lock_irq(q->queue_lock);+	if (nm)+		queue_flag_set(QUEUE_FLAG_NONROT, q);+	else+		queue_flag_clear(QUEUE_FLAG_NONROT, q);+	spin_unlock_irq(q->queue_lock);++	return ret;+}+ static ssize_t queue_nomerges_show(struct request_queue *q, char *page) { 	return queue_var_show(blk_queue_nomerges(q), page);@@ -146,8 +167,8 @@ static ssize_t queue_nomerges_store(stru 		queue_flag_set(QUEUE_FLAG_NOMERGES, q); 	else 		queue_flag_clear(QUEUE_FLAG_NOMERGES, q);- 	spin_unlock_irq(q->queue_lock);+ 	return ret; } @@ -210,6 +231,12 @@ static struct queue_sysfs_entry queue_hw 	.show = queue_hw_sector_size_show, }; +static struct queue_sysfs_entry queue_nonrot_entry = {+	.attr = {.name = "nonrot", .mode = S_IRUGO | S_IWUSR },+	.show = queue_nonrot_show,+	.store = queue_nonrot_store,+};+ static struct queue_sysfs_entry queue_nomerges_entry = { 	.attr = {.name = "nomerges", .mode = S_IRUGO | S_IWUSR }, 	.show = queue_nomerges_show,@@ -229,6 +256,7 @@ static struct attribute *default_attrs[] 	&queue_max_sectors_entry.attr, 	&queue_iosched_entry.attr, 	&queue_hw_sector_size_entry.attr,+	&queue_nonrot_entry.attr, 	&queue_nomerges_entry.attr, 	&queue_rq_affinity_entry.attr, 	NULL,ÿôèº{.nÇ+?·?®?­?+%?Ëÿ±éݶ¥?wÿº{.nÇ+?·¥?{±þ'^þ)í?æèw*jg¬±¨¶????Ý¢jÿ¾«þG«?éÿ¢¸¢·¦j:+v?¨?wèjØm¶?ÿþø¯ù®w¥þ?àþf£¢·h??â?úÿ?Ù¥


[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux