From: James Bottomley <James.Bottomley@steeleye.com>
To: "Justin T. Gibbs" <gibbs@scsiguy.com>
Cc: Christoph Hellwig <hch@lst.de>,
SCSI Mailing List <linux-scsi@vger.kernel.org>
Subject: Re: [PATCH] allow drivers to hook into watchdog timeout
Date: 10 Feb 2004 13:41:46 -0500 [thread overview]
Message-ID: <1076438507.2165.38.camel@mulgrave> (raw)
In-Reply-To: <2472850000.1076435243@aslan.btc.adaptec.com>
On Tue, 2004-02-10 at 12:47, Justin T. Gibbs wrote:
> >> o When should the timer start? If the HBA controls the timer, the timer
> >> can be started only once the command is actually issued to the end device.
> >> The watchdog is supposed to ensure that the transport/device doesn't
> >> lockup, so the timer should only cover this period. The mid-layer
> >> can't have this precision. This is even more crucial for drivers that
> >> must temporarily hold back I/O to handle a topology change, LIP, or
> >> other transport specific event that the mid-layer is unaware of.
> >
> > There was a change between 2.4 and 2.6 to address this. It was the
> > concept of eliminating driver queues entirely and using the block layer
> > queueing facilities. Thus, a 2.6 queuecommand should either issue the
> > command or return it to the mid-layer for requeueing.
>
> You can't get rid of driver or controller queues entirely. The command
> will always live on some queue for some period of time before
> it goes out on the transport. This implies that there will always
> be situations where I do not know in my queuecommand routine that the
> command needs to be stalled. In general, for this to work, the mid-layer
> must provide:
I assert you can get rid of driver queueing. I agree about the
controller issue queue.
If you need to stall a command after you've accepted it by returning
zero from queuecommand, you return it to the mid-layer with status
either BUSY or QUEUE_FULL.
> 1) A counting "device frozen semaphore" that the LLD or the mid-layer
> can decrement when I/O to this device needs to be halted.
If you really need to halt everything after returning BUSY, then the
scsi_block_requests()/scsi_unblock_requests() can be used for this.
> 2) An explicit scsi cmd code indicating "requeue this request - don't
> attempt recovery" for commands that are in internal queues that were
> innocently affected by a recovery or transport event.
commands in the controller issue queue innocently affected by recovery
should be returned to the mid-layer with DID_RESET, where they will be
reissued.
> > As far as ACA emulation goes, perhaps you're right, it is time to remove
> > that from the drivers as well and place it up in the mid-layer. That
> > way we'd have better knowledge of the request sense timings.
>
> Please don't confuse the issue by using the term "ACA". Linux doesn't
> take advantage of ACA so it has no place in this discussion. Perhaps you
> meant "auto-sense" emulation? (SAM3 5.9.4.2).
OK, I mean the clearing of the contingent allegiance condition in the
driver by issuing the REQUEST SENSE directly. That's the one case where
two commands are issued under one timer.
James
next prev parent reply other threads:[~2004-02-10 18:41 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-01-20 13:20 [PATCH] allow drivers to hook into watchdog timeout Christoph Hellwig
2004-01-20 15:53 ` Mike Anderson
2004-01-20 16:00 ` Christoph Hellwig
2004-01-20 16:47 ` Mike Anderson
2004-01-22 13:59 ` Christoph Hellwig
2004-01-22 14:27 ` Justin T. Gibbs
2004-01-20 17:00 ` Brian King
2004-01-20 18:06 ` Christoph Hellwig
2004-02-10 16:34 ` Justin T. Gibbs
2004-02-10 16:42 ` James Bottomley
2004-02-10 17:47 ` Justin T. Gibbs
2004-02-10 18:41 ` James Bottomley [this message]
2004-02-10 19:44 ` Justin T. Gibbs
2004-02-10 20:05 ` James Bottomley
2004-02-10 20:26 ` Justin T. Gibbs
2004-02-10 22:47 ` Clay Haapala
2004-02-11 20:05 ` James Bottomley
2004-02-12 0:15 ` Justin T. Gibbs
2004-02-12 14:42 ` James Bottomley
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=1076438507.2165.38.camel@mulgrave \
--to=james.bottomley@steeleye.com \
--cc=gibbs@scsiguy.com \
--cc=hch@lst.de \
--cc=linux-scsi@vger.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