From: Hannes Reinecke <hare@suse.de>
To: James Bottomley <jbottomley@parallels.com>
Cc: "linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
Ewan Milne <emilne@redhat.com>,
Ren Mingxin <renmx@cn.fujitsu.com>,
Bart van Assche <bvanassche@acm.org>,
Joern Engel <joern@logfs.org>
Subject: Re: [PATCH 7/7] scsi: Add 'eh_deadline' to limit SCSI EH runtime
Date: Wed, 23 Oct 2013 11:49:18 +0200 [thread overview]
Message-ID: <52679B9E.5010903@suse.de> (raw)
In-Reply-To: <1382514359.2081.33.camel@dabdike.quadriga.com>
On 10/23/2013 09:46 AM, James Bottomley wrote:
> On Wed, 2013-10-23 at 11:25 +0200, Hannes Reinecke wrote:
>> On 10/16/2013 09:22 PM, James Bottomley wrote:
>>> On Mon, 2013-07-01 at 08:50 +0200, Hannes Reinecke wrote:
>>>> This patchs adds an 'eh_deadline' sysfs attribute to the scsi
>>>> host which limits the overall runtime of the SCSI EH.
>>>> The 'eh_deadline' value is stored in the now obsolete field
>>>> 'resetting'.
>>>> When a command is failed the start time of the EH is stored
>>>> in 'last_reset'. If the overall runtime of the SCSI EH is longer
>>>> than last_reset + eh_deadline, the EH is short-circuited and
>>>> falls through to issue a host reset only.
>>>
>>> OK, so the specific problem with this one is that potentially it will
>>> spend all its time mucking about with aborts (which most often time out
>>> on non FC kit because of the issue problems) and then proceed to host
>>> reset, which mostly does nothing for failing devices.
>>>
>>> If you want to impose a deadline, then we need to spend only 50% of the
>>> time attempting aborts and the rest of the time escalating the resets.
>>>
>>> [...]
>>>> diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
>>>> index f43de1e..84369f2 100644
>>>> --- a/drivers/scsi/scsi_error.c
>>>> +++ b/drivers/scsi/scsi_error.c
>>>> @@ -89,6 +89,18 @@ void scsi_schedule_eh(struct Scsi_Host *shost)
>>>> }
>>>> EXPORT_SYMBOL_GPL(scsi_schedule_eh);
>>>>
>>>> +static int scsi_host_eh_past_deadline(struct Scsi_Host *shost)
>>>> +{
>>>> + if (!shost->last_reset || !shost->eh_deadline)
>>>> + return 0;
>>>> +
>>>> + if (time_before(jiffies,
>>>> + shost->last_reset + shost->eh_deadline))
>>>> + return 0;
>>>> +
>>>> + return 1;
>>>> +}
>>>> +
>>>
>>> What about instead:
>>>
>>> static int scsi_host_eh_past_deadline(struct Scsi_Host *shost, int percent) {
>>> if (!shost->last_reset || !shost->eh_deadline)
>>> return 0;
>>>
>>> if (time_before(jiffies,
>>> shost->last_reset + shost->eh_deadline * percent/100))
>>> return 0;
>>>
>>> return 1;
>>> }
>>>
>>> which allows us to have
>>>
>>> if (scsi_host_eh_past_deadline(shost, 50)) {
>>>
>>> in scsi_eh_abort_cmds()
>>>
>>> if (scsi_host_eh_past_deadline(shost, 66) {
>>>
>>> in scsi_eh_bus_device_reset()
>>>
>>> say 83 in target reset, and 100 in bus reset.
>>>
>>> Thus ensuring we at least get a crack at the reset chain?
>>>
>> Alternatively we could just escalate directly to LUN reset once the
>> first abort fails. That looks like a cleaner solution here.
>
> I'm OK with that ... if you want this in the current merge window, you
> have about a week to code it up ...
>
Patch is already compiling :-)
Cheers,
Hannes
--
Dr. Hannes Reinecke zSeries & Storage
hare@suse.de +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2013-10-23 7:47 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-01 6:50 [PATCHv2 0/7] Limit overall SCSI EH runtime Hannes Reinecke
2013-07-01 6:50 ` [PATCH 1/7] dpt_i2o: Remove DPTI_STATE_IOCTL Hannes Reinecke
2013-07-01 6:50 ` [PATCH 2/7] dpt_i2o: return SCSI_MLQUEUE_HOST_BUSY when in reset Hannes Reinecke
2013-07-01 6:50 ` [PATCH 3/7] advansys: Remove 'last_reset' references Hannes Reinecke
2013-07-01 6:50 ` [PATCH 4/7] tmscsim: Move 'last_reset' into host structure Hannes Reinecke
2013-07-01 6:50 ` [PATCH 5/7] dc395: Move 'last_reset' into internal " Hannes Reinecke
2013-07-01 6:50 ` [PATCH 6/7] scsi: remove check for 'resetting' Hannes Reinecke
2013-07-01 6:50 ` [PATCH 7/7] scsi: Add 'eh_deadline' to limit SCSI EH runtime Hannes Reinecke
2013-09-20 7:48 ` Ren Mingxin
2013-10-16 19:22 ` James Bottomley
2013-10-17 14:27 ` Ewan Milne
2013-10-23 9:25 ` Hannes Reinecke
2013-10-23 7:46 ` James Bottomley
2013-10-23 9:49 ` Hannes Reinecke [this message]
2013-07-01 17:44 ` [PATCHv2 0/7] Limit overall " Jörn Engel
2013-07-01 19:23 ` James Bottomley
2013-07-01 20:55 ` Jörn Engel
2013-07-02 5:48 ` Hannes Reinecke
2013-07-02 6:37 ` James Bottomley
2013-07-02 14:58 ` Jörn Engel
2013-07-02 16:33 ` James Bottomley
2013-07-02 15:50 ` Jörn Engel
2013-07-10 20:35 ` Ewan Milne
2013-07-12 5:54 ` Ren Mingxin
2013-07-12 13:30 ` Ewan Milne
2013-07-15 10:33 ` Ren Mingxin
2013-07-26 9:52 ` Ren Mingxin
2013-08-07 6:43 ` Ren Mingxin
2013-08-29 13:06 ` Hannes Reinecke
2013-09-24 20:51 ` Ric Wheeler
2013-09-25 5:48 ` Hannes Reinecke
2013-10-02 16:21 ` Hannes Reinecke
-- strict thread matches above, loose matches on Subject: below --
2013-06-10 11:11 [PATCH " Hannes Reinecke
2013-06-10 11:11 ` [PATCH 7/7] scsi: Add 'eh_deadline' to limit " Hannes Reinecke
2013-06-27 14:33 ` Ewan Milne
2013-06-28 7:14 ` Hannes Reinecke
2013-06-28 12:54 ` Ewan Milne
2013-06-28 7:29 ` Bart Van Assche
2013-06-28 7:42 ` Hannes Reinecke
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=52679B9E.5010903@suse.de \
--to=hare@suse.de \
--cc=bvanassche@acm.org \
--cc=emilne@redhat.com \
--cc=jbottomley@parallels.com \
--cc=joern@logfs.org \
--cc=linux-scsi@vger.kernel.org \
--cc=renmx@cn.fujitsu.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.