aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>2006-10-01 06:00:47 -0400
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-10-03 10:16:48 -0400
commit8f6fd19f1f7ab1dab225845464c96cba36a18533 (patch)
tree5619fe5cd72a49cc5d3a9edd0f7c82b1bc0733d6 /drivers/scsi
parentf70cfa9bef432d7aeb4e35c093ac27fd6f071d7e (diff)
[SCSI] enable clustering for tmscsim
following an email from John Adams <johna@onevista.com> to me with a patch to enable tmscsim to use blocks up to 1MB and a discussion on linux-scsi, below is a patch to enable clustering for tmscsim. I made it switchable with a module parameter, with default "enable" - in case somebody gets problems with it. Unfortunately, I was not able to check if this alone lets you use any bigger blocks with a tape, as my tape seems to only support 1 block size - only "mt setblk 1" is successful, any other value fails. OTOH, testing on a P-133 showed that enabling clustering alone improves throughput by 10% and reduces CPU load by another 10%, so, seems a worthy thing to do. As for setting max_sectors, that might become a separate patch... Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/tmscsim.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/scsi/tmscsim.c b/drivers/scsi/tmscsim.c
index 9404ff3d4c79..028d5f641cc6 100644
--- a/drivers/scsi/tmscsim.c
+++ b/drivers/scsi/tmscsim.c
@@ -279,6 +279,10 @@ static void dc390_ResetDevParam(struct dc390_acb* pACB);
279static u32 dc390_laststatus = 0; 279static u32 dc390_laststatus = 0;
280static u8 dc390_adapterCnt = 0; 280static u8 dc390_adapterCnt = 0;
281 281
282static int disable_clustering;
283module_param(disable_clustering, int, S_IRUGO);
284MODULE_PARM_DESC(disable_clustering, "If you experience problems with your devices, try setting to 1");
285
282/* Startup values, to be overriden on the commandline */ 286/* Startup values, to be overriden on the commandline */
283static int tmscsim[] = {-2, -2, -2, -2, -2, -2}; 287static int tmscsim[] = {-2, -2, -2, -2, -2, -2};
284 288
@@ -2299,7 +2303,7 @@ static struct scsi_host_template driver_template = {
2299 .this_id = 7, 2303 .this_id = 7,
2300 .sg_tablesize = SG_ALL, 2304 .sg_tablesize = SG_ALL,
2301 .cmd_per_lun = 1, 2305 .cmd_per_lun = 1,
2302 .use_clustering = DISABLE_CLUSTERING, 2306 .use_clustering = ENABLE_CLUSTERING,
2303}; 2307};
2304 2308
2305/*********************************************************************** 2309/***********************************************************************
@@ -2525,6 +2529,8 @@ static int __devinit dc390_probe_one(struct pci_dev *pdev,
2525 pci_set_master(pdev); 2529 pci_set_master(pdev);
2526 2530
2527 error = -ENOMEM; 2531 error = -ENOMEM;
2532 if (disable_clustering)
2533 driver_template.use_clustering = DISABLE_CLUSTERING;
2528 shost = scsi_host_alloc(&driver_template, sizeof(struct dc390_acb)); 2534 shost = scsi_host_alloc(&driver_template, sizeof(struct dc390_acb));
2529 if (!shost) 2535 if (!shost)
2530 goto out_disable_device; 2536 goto out_disable_device;
@@ -2660,6 +2666,10 @@ static struct pci_driver dc390_driver = {
2660 2666
2661static int __init dc390_module_init(void) 2667static int __init dc390_module_init(void)
2662{ 2668{
2669 if (!disable_clustering)
2670 printk(KERN_INFO "DC390: clustering now enabled by default. If you get problems load\n"
2671 "\twith \"disable_clustering=1\" and report to maintainers\n");
2672
2663 if (tmscsim[0] == -1 || tmscsim[0] > 15) { 2673 if (tmscsim[0] == -1 || tmscsim[0] > 15) {
2664 tmscsim[0] = 7; 2674 tmscsim[0] = 7;
2665 tmscsim[1] = 4; 2675 tmscsim[1] = 4;