linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: malahal@us.ibm.com
To: Mike Anderson <andmike@linux.vnet.ibm.com>
Cc: "Shi, Harris" <Harris.Shi@lsi.com>,
	Jens Axboe <jens.axboe@oracle.com>,
	Alan Stern <stern@rowland.harvard.edu>, Tejun Heo <tj@kernel.org>,
	SCSI development list <linux-scsi@vger.kernel.org>
Subject: Re: question on block-layer timeout change
Date: Wed, 12 Nov 2008 09:16:52 -0800	[thread overview]
Message-ID: <20081112171652.GA30108@us.ibm.com> (raw)
In-Reply-To: <20081112072919.GB12192@linux.vnet.ibm.com>

Mike Anderson [andmike@linux.vnet.ibm.com] wrote:
> Shi, Harris <Harris.Shi@lsi.com> wrote:
> >    Due to the current timeout management change, our RDAC (failover) driver
> >    had some difficulties in handling SCSI I/O timeout. The RDAC driver is in
> >    the similar        layer as HBA driver in that it will register into scsi
> >    mid-layer as scsi_host_template and stays below mid-layer. However, all
> >    scsi I/Os coming to RDAC stack are routed by a path then dispatched to the
> >    real HBA driver via mid-layer. We used to rely on the timer in
> >    scsi_cmnd->eh_timeout to deal with scsi i/o coming into the RDAC stack.
> >    Basically when I/O is coming to RDAC stack, we need to delete the timer
> >    for each I/O. Then after selecting a specific path for this I/O, we need
> >    to send the I/O back to mid-layer with a larger timeout value just to
> >    avoid the forced failover. When I/O completes successfully, we added the
> >    original timer back to the I/O and pass it over to upper block layer for
> >    further process.
> > 
> > 
> > 
> >    However, with the current timeout management functions moving to block
> >    layer, it became difficult for us to explicitly control the timeout value
> >    for specific I/O.
> > 
> >    Can you shed some lights on how to handle the I/O based timeout in this
> >    case?
> > 
> 
> Since long term mpp capabilities should be handled by dm-mp and the SCSI
> RDAC handler exporting functions to allow direct adding and deleting of the
> timer may not be something that would be needed long term. It may not be
> really clean to add these interfaces in.
> 
> Could similar prior functionality be created by the following?
> 	1.) To the RDAC vhba add a hostt->eh_timed_out function. In this
> 	timeout function return BLK_EH_RESET_TIMER until it is done with
> 	the command. Since the vhba does not have a transport
> 	scsi_times_out should call this function on every timeout. There is
> 	some overhead here depending on the default timeout value set in
> 	timing out and then resetting the timer.

I believe, GDTG driver does this sort of thing for a different purpose.

> 	2.) For each sdev that is taken over store the previous
> 	rq_timed_out_fn and then use blk_queue_rq_timed_out to set a mpp
> 	specific function for the requests sent to the real HBA drivers.
> 
> 	3.) Set the timeout in the real HBA driver requests prior to
> 	sending it to the mid layer.

Should work, I guess...

  reply	other threads:[~2008-11-12 17:16 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <3568BBCB98C00041A9E622952FD5F24EA11C9F3A@cosmail03.lsi.com>
2008-11-12  7:29 ` question on block-layer timeout change Mike Anderson
2008-11-12 17:16   ` malahal [this message]
2008-11-14  8:51   ` Shi, Harris
2008-11-14 17:18     ` malahal
2008-12-10 23:11       ` Shi, Harris
2008-12-11 11:03         ` Hannes Reinecke
2008-12-16 16:55           ` Shi, Harris
2008-12-17  7:33             ` Hannes Reinecke
2008-12-17 22:38               ` Shi, Harris
2008-12-18  9:23                 ` Mike Anderson
2008-12-18 22:37                   ` Shi, Harris
2009-01-04 17:12                   ` Mike Christie
2009-01-07  6:37                     ` Shi, Harris
2009-01-07 20:46                       ` Mike Christie
2009-01-24 16:34                         ` Shi, Harris
2008-11-11 16:26 Question " Shi, Harris

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=20081112171652.GA30108@us.ibm.com \
    --to=malahal@us.ibm.com \
    --cc=Harris.Shi@lsi.com \
    --cc=andmike@linux.vnet.ibm.com \
    --cc=jens.axboe@oracle.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=stern@rowland.harvard.edu \
    --cc=tj@kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).