Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753930AbZAESxg (ORCPT ); Mon, 5 Jan 2009 13:53:36 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752504AbZAESxZ (ORCPT ); Mon, 5 Jan 2009 13:53:25 -0500 Received: from mu-out-0910.google.com ([209.85.134.186]:53317 "EHLO mu-out-0910.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752312AbZAESxX (ORCPT ); Mon, 5 Jan 2009 13:53:23 -0500 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:subject:date:user-agent:cc:mime-version:content-type :content-transfer-encoding:content-disposition:message-id; b=jDnjTGFVUXzQjpD2zkR+JAGVSgdKAJpw86xwAJSXd6B5TPB5P2YiTWUJQNOoJSm6Dl qcQFV14/wcoZdGieOuxfC4MJj1Y+2F5taCMKU9NUIq9szX8H1ZMQ4mbyMQpHLv2JSQom tpa9GoyVTym4H8yRFgeZi/5ruS4npPr+VIEzI= From: Bartlomiej Zolnierkiewicz To: Jens Axboe Subject: [PATCH] block: export SSD/non-rotational queue flag through sysfs Date: Mon, 5 Jan 2009 19:52:57 +0100 User-Agent: KMail/1.10.3 (Linux/2.6.28-next-20090102; KDE/4.1.3; i686; ; ) Cc: linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, Alan Cox MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Disposition: inline Message-Id: <200901051952.58029.bzolnier@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by alpha id n05IrewM018971 Content-Length: 2425 Lines: 4 From: Bartlomiej Zolnierkiewicz 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 Signed-off-by: Bartlomiej Zolnierkiewicz --- 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?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?