2006-11-06 20:20:58

by Mike Miller (OS Dev)

[permalink] [raw]
Subject: [PATCH 6/12] repost: cciss: set sector_size to 2048 for performance

PATCH 6/11

This patch changes the blk_queue_max_sectors from 512 to 2048. This helps
increase performance.
Please consider this for inclusion.

Thanks,
mikem

Signed-off-by: Mike Miller <[email protected]>

--------------------------------------------------------------------------------
---

drivers/block/cciss.c | 12 +++++++++---
drivers/block/cciss.h | 1 +
2 files changed, 10 insertions(+), 3 deletions(-)

diff -puN drivers/block/cciss.c~cciss_sector_size_for_lx2619-rc4 drivers/block/cciss.c
--- linux-2.6/drivers/block/cciss.c~cciss_sector_size_for_lx2619-rc4 2006-11-06 13:27:44.000000000 -0600
+++ linux-2.6-root/drivers/block/cciss.c 2006-11-06 13:27:44.000000000 -0600
@@ -269,6 +269,7 @@ static int cciss_proc_get_info(char *buf
"Firmware Version: %c%c%c%c\n"
"IRQ: %d\n"
"Logical drives: %d\n"
+ "Sector size: %d\n"
"Current Q depth: %d\n"
"Current # commands on controller: %d\n"
"Max Q depth since init: %d\n"
@@ -279,7 +280,9 @@ static int cciss_proc_get_info(char *buf
(unsigned long)h->board_id,
h->firm_ver[0], h->firm_ver[1], h->firm_ver[2],
h->firm_ver[3], (unsigned int)h->intr[SIMPLE_MODE_INT],
- h->num_luns, h->Qdepth, h->commands_outstanding,
+ h->num_luns,
+ h->cciss_sector_size,
+ h->Qdepth, h->commands_outstanding,
h->maxQsinceinit, h->max_outstanding, h->maxSG);

pos += size;
@@ -1389,7 +1392,7 @@ static void cciss_update_drive_info(int
/* This is a limit in the driver and could be eliminated. */
blk_queue_max_phys_segments(disk->queue, MAXSGENTRIES);

- blk_queue_max_sectors(disk->queue, 512);
+ blk_queue_max_sectors(disk->queue, h->cciss_sector_size);

blk_queue_softirq_done(disk->queue, cciss_softirq_done);

@@ -3341,6 +3344,9 @@ static int __devinit cciss_init_one(stru
hba[i]->access.set_intr_mask(hba[i], CCISS_INTR_ON);

cciss_procinit(i);
+
+ hba[i]->cciss_sector_size = 2048;
+
hba[i]->busy_initializing = 0;

for (j = 0; j < NWD; j++) { /* mfm */
@@ -3365,7 +3371,7 @@ static int __devinit cciss_init_one(stru
/* This is a limit in the driver and could be eliminated. */
blk_queue_max_phys_segments(q, MAXSGENTRIES);

- blk_queue_max_sectors(q, 512);
+ blk_queue_max_sectors(q, hba[i]->cciss_sector_size);

blk_queue_softirq_done(q, cciss_softirq_done);

diff -puN drivers/block/cciss.h~cciss_sector_size_for_lx2619-rc4 drivers/block/cciss.h
--- linux-2.6/drivers/block/cciss.h~cciss_sector_size_for_lx2619-rc4 2006-11-06 13:27:44.000000000 -0600
+++ linux-2.6-root/drivers/block/cciss.h 2006-11-06 13:27:44.000000000 -0600
@@ -77,6 +77,7 @@ struct ctlr_info
unsigned int intr[4];
unsigned int msix_vector;
unsigned int msi_vector;
+ int cciss_sector_size;
BYTE cciss_read;
BYTE cciss_write;
BYTE cciss_read_capacity;
_


2006-11-06 20:27:56

by Jens Axboe

[permalink] [raw]
Subject: Re: [PATCH 6/12] repost: cciss: set sector_size to 2048 for performance

On Mon, Nov 06 2006, Mike Miller (OS Dev) wrote:
> PATCH 6/11
>
> This patch changes the blk_queue_max_sectors from 512 to 2048. This helps
> increase performance.
> Please consider this for inclusion.

Bad naming - I've never seen sector size refer to anything else but the
actual sector size on the device. Here you use it as the largest
supported command size. To make matters worse, you also export it in the
proc file as such, that's certain to confuse users.

In other news, ack on patch 1-5 so far.

--
Jens Axboe