Commit 8f6fd19f authored by Guennadi Liakhovetski's avatar Guennadi Liakhovetski Committed by James Bottomley

[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: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent f70cfa9b
...@@ -279,6 +279,10 @@ static void dc390_ResetDevParam(struct dc390_acb* pACB); ...@@ -279,6 +279,10 @@ static void dc390_ResetDevParam(struct dc390_acb* pACB);
static u32 dc390_laststatus = 0; static u32 dc390_laststatus = 0;
static u8 dc390_adapterCnt = 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 */ /* Startup values, to be overriden on the commandline */
static int tmscsim[] = {-2, -2, -2, -2, -2, -2}; static int tmscsim[] = {-2, -2, -2, -2, -2, -2};
...@@ -2299,7 +2303,7 @@ static struct scsi_host_template driver_template = { ...@@ -2299,7 +2303,7 @@ static struct scsi_host_template driver_template = {
.this_id = 7, .this_id = 7,
.sg_tablesize = SG_ALL, .sg_tablesize = SG_ALL,
.cmd_per_lun = 1, .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, ...@@ -2525,6 +2529,8 @@ static int __devinit dc390_probe_one(struct pci_dev *pdev,
pci_set_master(pdev); pci_set_master(pdev);
error = -ENOMEM; error = -ENOMEM;
if (disable_clustering)
driver_template.use_clustering = DISABLE_CLUSTERING;
shost = scsi_host_alloc(&driver_template, sizeof(struct dc390_acb)); shost = scsi_host_alloc(&driver_template, sizeof(struct dc390_acb));
if (!shost) if (!shost)
goto out_disable_device; goto out_disable_device;
...@@ -2660,6 +2666,10 @@ static struct pci_driver dc390_driver = { ...@@ -2660,6 +2666,10 @@ static struct pci_driver dc390_driver = {
static int __init dc390_module_init(void) 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) { if (tmscsim[0] == -1 || tmscsim[0] > 15) {
tmscsim[0] = 7; tmscsim[0] = 7;
tmscsim[1] = 4; tmscsim[1] = 4;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment