summaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
authorMike Miller <mike.miller@hp.com>2006-12-07 05:35:06 +0100
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-07 17:39:29 +0100
commit92c4231aef720bd5e1d634d2f7335f31277318da (patch)
tree3c08d3479b2db7db693c5439357648ea02135e2e /drivers/block
parent[PATCH] cciss: disable DMA prefetch on P600 (diff)
downloadlinux-92c4231aef720bd5e1d634d2f7335f31277318da.tar.xz
linux-92c4231aef720bd5e1d634d2f7335f31277318da.zip
[PATCH] cciss: set sector_size to 2048 for performance
Change the blk_queue_max_sectors from 512 to 2048. This helps increase performance. [akpm@osdl.org: s/sector_size/max_sectors/] Signed-off-by: Mike Miller <mike.miller@hp.com> Cc: Jens Axboe <jens.axboe@oracle.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/cciss.c12
-rw-r--r--drivers/block/cciss.h1
2 files changed, 10 insertions, 3 deletions
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index a17223c43aeb..e61279f6f26e 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -269,6 +269,7 @@ static int cciss_proc_get_info(char *buffer, char **start, off_t offset,
"Firmware Version: %c%c%c%c\n"
"IRQ: %d\n"
"Logical drives: %d\n"
+ "Max sectors: %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 *buffer, char **start, off_t offset,
(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_max_sectors,
+ h->Qdepth, h->commands_outstanding,
h->maxQsinceinit, h->max_outstanding, h->maxSG);
pos += size;
@@ -1395,7 +1398,7 @@ static void cciss_update_drive_info(int ctlr, int drv_index)
/* 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_max_sectors);
blk_queue_softirq_done(disk->queue, cciss_softirq_done);
@@ -3347,6 +3350,9 @@ static int __devinit cciss_init_one(struct pci_dev *pdev,
hba[i]->access.set_intr_mask(hba[i], CCISS_INTR_ON);
cciss_procinit(i);
+
+ hba[i]->cciss_max_sectors = 2048;
+
hba[i]->busy_initializing = 0;
for (j = 0; j < NWD; j++) { /* mfm */
@@ -3371,7 +3377,7 @@ static int __devinit cciss_init_one(struct pci_dev *pdev,
/* 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_max_sectors);
blk_queue_softirq_done(q, cciss_softirq_done);
diff --git a/drivers/block/cciss.h b/drivers/block/cciss.h
index 0d765f9237be..c3df673f860b 100644
--- a/drivers/block/cciss.h
+++ b/drivers/block/cciss.h
@@ -77,6 +77,7 @@ struct ctlr_info
unsigned int intr[4];
unsigned int msix_vector;
unsigned int msi_vector;
+ int cciss_max_sectors;
BYTE cciss_read;
BYTE cciss_write;
BYTE cciss_read_capacity;