All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ren Mingxin <renmx@cn.fujitsu.com>
To: emilne@redhat.com, hare@suse.de
Cc: jbottomley@parallels.com, linux-scsi@vger.kernel.org,
	joern@logfs.org, james.smart@emulex.com, bvanassche@acm.org,
	roland@purestorage.com
Subject: Re: [PATCH] scsi: Set the minimum valid value of 'eh_deadline' as 0
Date: Thu, 10 Oct 2013 16:46:19 +0800	[thread overview]
Message-ID: <5256695B.9030007@cn.fujitsu.com> (raw)
In-Reply-To: <1381321707.27183.21.camel@localhost.localdomain>

Hi, Ewan, Hannes:

On 10/09/2013 08:28 PM, Ewan Milne wrote:
> On Wed, 2013-10-09 at 15:43 +0800, Ren Mingxin wrote:
>> The former minimum valid value of 'eh_deadline' is 1s, which means
>> the earliest occasion to shorten EH is 1 second later since a
>> command is failed or timed out. But if we want to skip EH steps
>> ASAP, we have to wait until the first EH step is finished. If the
>> duration of the first EH step is long, this waiting time is
>> excruciating. So, it is necessary to accept 0 as the minimum valid
>> value for 'eh_deadline'.
>>
>> According to my test, with Hannes' patchset 'New EH command timeout
>> handler' as well, the minimum IO time is improved from 73s
>> (eh_deadline = 1) to 43s(eh_deadline = 0) when commands are timed
>> out by disabling RSCN and target port.
>>
>> Another thing: scsi_finish_command() should be invoked if
>> scsi_eh_scmd_add() is returned on failure - let EH finish those
>> commands.
>>
>> Signed-off-by: Ren Mingxin<renmx@cn.fujitsu.com>
>> ---
>>   drivers/scsi/hosts.c      |   14 +++++++++++---
>>   drivers/scsi/scsi_error.c |   40 +++++++++++++++++++++++++++-------------
>>   drivers/scsi/scsi_sysfs.c |   36 +++++++++++++++++++++++++-----------
>>   include/scsi/scsi_host.h  |    2 +-
>>   4 files changed, 64 insertions(+), 28 deletions(-)
>>
>> diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
>> index f334859..e84123a 100644
>> --- a/drivers/scsi/hosts.c
>> +++ b/drivers/scsi/hosts.c
>> @@ -316,11 +316,11 @@ static void scsi_host_dev_release(struct device *dev)
>>   	kfree(shost);
>>   }
>>
>> -static unsigned int shost_eh_deadline;
>> +static unsigned int shost_eh_deadline = -1;
>
> This should probably be "static int shost_eh_deadline = -1;".
> And the range tests in scsi_host_alloc() and store_shost_eh_deadline()
> below should probably use INT_MAX rather than UINT_MAX.

The maximum value is decreased then.
Hannes, agree?

>>
>>   module_param_named(eh_deadline, shost_eh_deadline, uint, S_IRUGO|S_IWUSR);
>>   MODULE_PARM_DESC(eh_deadline,
>> -		 "SCSI EH timeout in seconds (should be between 1 and 2^32-1)");
>> +		 "SCSI EH timeout in seconds (should be between 0 and 2^32-1)");

And the description above should be modified as:

+		"SCSI EH timeout in seconds (should be between 0 and (2^31-1)/HZ)");


>>
>>
>>   static struct device_type scsi_host_type = {
>>   	.name =		"scsi_host",
>> @@ -394,7 +394,15 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize)
>>   	shost->unchecked_isa_dma = sht->unchecked_isa_dma;
>>   	shost->use_clustering = sht->use_clustering;
>>   	shost->ordered_tag = sht->ordered_tag;
>> -	shost->eh_deadline = shost_eh_deadline * HZ;
>> +	if (shost_eh_deadline == -1)
>> +		shost->eh_deadline = -1;
>> +	else if ((ulong) shost_eh_deadline * HZ>  UINT_MAX) {
>> +		printk(KERN_WARNING "scsi%d: eh_deadline %u exceeds the "
>> +		       "maximum, setting to %u\n",
>> +		       shost->host_no, shost_eh_deadline, UINT_MAX / HZ);
>> +		shost->eh_deadline = UINT_MAX / HZ * HZ;
>
> Just use "shost->eh_deadline = INT_MAX" here, leave off the "/ HZ * HZ".

Nod.

Thanks,
Ren

  reply	other threads:[~2013-10-10  8:45 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-02 11:58 [PATCHv6 0/3] New EH command timeout handler Hannes Reinecke
2013-09-02 11:58 ` [PATCH 1/3] scsi: Fix erratic device offline during EH Hannes Reinecke
2013-09-11 14:36   ` Jeremy Linton
2013-10-16 19:22   ` James Bottomley
2013-10-23  8:58     ` Martin K. Petersen
2013-10-23  9:27     ` Hannes Reinecke
2013-09-02 11:58 ` [PATCH 2/3] scsi: improved eh timeout handler Hannes Reinecke
2013-09-11  9:16   ` Ren Mingxin
2013-09-12 20:49     ` Hannes Reinecke
2013-09-20  7:59   ` Ren Mingxin
2013-10-02 16:24     ` Hannes Reinecke
2013-10-09  7:43       ` [PATCH] scsi: Set the minimum valid value of 'eh_deadline' as 0 Ren Mingxin
2013-10-09  9:38         ` Hannes Reinecke
2013-10-09 12:28         ` Ewan Milne
2013-10-10  8:46           ` Ren Mingxin [this message]
2013-09-02 11:58 ` [PATCH 3/3] scsi_error: Update documentation Hannes Reinecke
2013-10-02  7:25 ` [PATCHv6 0/3] New EH command timeout handler Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5256695B.9030007@cn.fujitsu.com \
    --to=renmx@cn.fujitsu.com \
    --cc=bvanassche@acm.org \
    --cc=emilne@redhat.com \
    --cc=hare@suse.de \
    --cc=james.smart@emulex.com \
    --cc=jbottomley@parallels.com \
    --cc=joern@logfs.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=roland@purestorage.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.