diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2006-10-01 12:00:47 +0200 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-10-03 09:16:48 -0500 |
commit | 8f6fd19f1f7ab1dab225845464c96cba36a18533 (patch) | |
tree | 5619fe5cd72a49cc5d3a9edd0f7c82b1bc0733d6 /drivers/scsi/tmscsim.c | |
parent | f70cfa9bef432d7aeb4e35c093ac27fd6f071d7e (diff) | |
download | lwn-8f6fd19f1f7ab1dab225845464c96cba36a18533.tar.gz lwn-8f6fd19f1f7ab1dab225845464c96cba36a18533.zip |
[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/tmscsim.c')
-rw-r--r-- | drivers/scsi/tmscsim.c | 12 |
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); static u32 dc390_laststatus = 0; static u8 dc390_adapterCnt = 0; +static int disable_clustering; +module_param(disable_clustering, int, S_IRUGO); +MODULE_PARM_DESC(disable_clustering, "If you experience problems with your devices, try setting to 1"); + /* Startup values, to be overriden on the commandline */ static int tmscsim[] = {-2, -2, -2, -2, -2, -2}; @@ -2299,7 +2303,7 @@ static struct scsi_host_template driver_template = { .this_id = 7, .sg_tablesize = SG_ALL, .cmd_per_lun = 1, - .use_clustering = DISABLE_CLUSTERING, + .use_clustering = ENABLE_CLUSTERING, }; /*********************************************************************** @@ -2525,6 +2529,8 @@ static int __devinit dc390_probe_one(struct pci_dev *pdev, pci_set_master(pdev); error = -ENOMEM; + if (disable_clustering) + driver_template.use_clustering = DISABLE_CLUSTERING; shost = scsi_host_alloc(&driver_template, sizeof(struct dc390_acb)); if (!shost) goto out_disable_device; @@ -2660,6 +2666,10 @@ static struct pci_driver dc390_driver = { static int __init dc390_module_init(void) { + if (!disable_clustering) + printk(KERN_INFO "DC390: clustering now enabled by default. If you get problems load\n" + "\twith \"disable_clustering=1\" and report to maintainers\n"); + if (tmscsim[0] == -1 || tmscsim[0] > 15) { tmscsim[0] = 7; tmscsim[1] = 4; |