From: Oliver Neukum <oliver@neukum.name>
To: Luben Tuikov <luben@splentec.com>
Cc: Alan Stern <stern@rowland.harvard.edu>,
David Brownell <david-b@pacbell.net>,
Matthew Dharm <mdharm-scsi@one-eyed-alien.net>,
Mike Anderson <andmike@us.ibm.com>, Greg KH <greg@kroah.com>,
linux-usb-devel@lists.sourceforge.net,
Linux SCSI list <linux-scsi@vger.kernel.org>
Subject: Re: [linux-usb-devel] Re: [PATCH] USB changes for 2.5.58
Date: Thu, 23 Jan 2003 20:40:41 +0100 [thread overview]
Message-ID: <200301232040.41862.oliver@neukum.name> (raw)
In-Reply-To: <3E303D5E.5020000@splentec.com>
Am Donnerstag, 23. Januar 2003 20:07 schrieb Luben Tuikov:
> Oliver Neukum wrote:
> > Very well, so you agree that the SCSI layer should export to the LLDD
> > a function to set devices offline?
>
> I've never really disagreed -- simpler transports will make use
> of such a function. The important point to note is that the error
Good.
> return value for simpler and more complicated transports has to
> be the same (i.e. ones which know about the device disconnect and
> others which send out the CDB and which will return with error).
Why? It throws away information needlessly. If the LLDD knows
that the reason is unplugging why not report it? A LLDD that doesn't
know about devices going away on the other hand can just report
an error. Can the higher layers simply assume that the device was unplugged?
IMHO they can't and should at least try to recover from the error.
> I forgot to mention this with my previous email: think of a LLDD
> more as part of the transport than of SCSI Core.
Hard to do. The scsi mid layer does timing out and error handling.
There's a relatively tight connection.
> > So the first thing a LLDD has to do after it has learned about a device
> > being removed is to have the device block.
>
> ``block'' (verb) is such a strong word.
What do you prefer ? ;-) I'll certainly use another word if you like me to
do so.
> * Simple transports: call scsi_set_device_offline(dev) or something like
> this.
>
> * More complicated transports: SCSI Core sees Service Response of Service
> Delivery Failure and it itself calls scsi_set_device_offline(dev).
>
> scsi_set_device_offline(dev) calls a high-level kernel function to start
> higher level things (block queue cut off, etc) which *may* need to be done.
How do you differentiate between real failure and device removal?
> > So it should be the LLDD's responsibility to finish the outstanding
> > commands.
>
> LLDD cannot really ``finish'' outstanding commands, it's just a transport
> portal.
Well, report back the results, if you prefer, thus returning ownership to
higher layers.
> > Furthermore, there's a window for commands already having passed the
> > check for offline but not yet being noticed by the LLDD.
>
> They will return with an appropriate error.
Not quite so simple. Some LLDDs need to know at some point that
no more commands will arrive for sure and none are still in flight.
> > The simplest solution is to
> > use a waiting primitive from RCU. So we are at:
> >
> > 1. set device offline
> > 2. synchronize the kernel
> > 3. finish all pending commands
>
> I told you before: 3 starts *before* 2 and 3 is *part* of 2.
> Furthermore, after 1 has happened in time, all pending commands
> will error out (wrt a time line).
That's not enough. The LLDD has to know that they've errored
in order to free associated data structures. The simplest way to
do so is returning them to higher layers.
> 2 is what I call ``higher-level hook'', but it's not really
> ``synchronization''. Synchronization will take delta-time, it
> will not happen instantaneously.
Please explain.
> I.e. you have to allow for the possibility of a command
> being sent to a non-existent device through LLDD, in which
> case the LLDD/transport will have to error it out.
Non existant is OK. For a device already flagged offline is not OK.
Regards
Oliver
next prev parent reply other threads:[~2003-01-23 19:40 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <10426732153816@kroah.com>
[not found] ` <10426732212871@kroah.com>
[not found] ` <20030116093112.B29001@one-eyed-alien.net>
[not found] ` <20030116173539.GA31235@kroah.com>
2003-01-16 19:43 ` [linux-usb-devel] Re: [PATCH] USB changes for 2.5.58 Matthew Dharm
2003-01-16 19:53 ` Greg KH
[not found] ` <20030116195306.GA32697@kroah.com>
2003-01-16 20:10 ` Linus Torvalds
2003-01-16 20:43 ` greg kh
2003-01-16 21:41 ` Linus Torvalds
2003-01-16 22:51 ` Matthew Dharm
2003-01-16 20:40 ` David Brownell
2003-01-16 20:48 ` Mike Anderson
2003-01-16 23:43 ` Oliver Neukum
2003-01-17 8:50 ` Mike Anderson
2003-01-17 10:55 ` Oliver Neukum
2003-01-17 15:06 ` Alan Stern
2003-01-17 18:54 ` Matthew Dharm
2003-01-17 20:25 ` Mike Anderson
2003-01-17 22:07 ` Oliver Neukum
2003-01-17 20:26 ` [linux-usb-devel] " Oliver Neukum
2003-01-17 20:49 ` Mike Anderson
2003-01-20 17:36 ` Luben Tuikov
2003-01-20 18:23 ` Oliver Neukum
2003-01-20 18:56 ` Luben Tuikov
2003-01-20 19:10 ` [linux-usb-devel] " Oliver Neukum
2003-01-20 19:50 ` David Brownell
2003-01-21 3:31 ` Alan
2003-01-21 7:17 ` Oliver Neukum
2003-01-21 11:57 ` [linux-usb-devel] " Douglas Gilbert
2003-01-21 13:48 ` Oliver Neukum
2003-01-21 18:22 ` Luben Tuikov
2003-01-21 13:30 ` James Bottomley
2003-01-20 20:08 ` David Brownell
2003-01-20 20:48 ` [linux-usb-devel] " Oliver Neukum
2003-01-20 21:24 ` David Brownell
2003-01-20 21:51 ` [linux-usb-devel] " Oliver Neukum
2003-01-20 22:26 ` David Brownell
2003-01-20 23:00 ` Oliver Neukum
2003-01-21 0:44 ` David Brownell
2003-01-21 0:50 ` Oliver Neukum
2003-01-21 18:16 ` Luben Tuikov
2003-01-21 19:00 ` Oliver Neukum
2003-01-21 20:02 ` [linux-usb-devel] " Luben Tuikov
2003-01-21 21:02 ` Alan Stern
2003-01-22 21:50 ` Luben Tuikov
2003-01-22 22:46 ` Oliver Neukum
2003-01-23 17:46 ` Luben Tuikov
2003-01-23 18:19 ` Oliver Neukum
2003-01-23 19:07 ` Luben Tuikov
2003-01-23 19:40 ` Oliver Neukum [this message]
2003-01-23 20:28 ` Doug Ledford
2003-01-23 20:59 ` Oliver Neukum
2003-01-23 21:34 ` Doug Ledford
2003-01-23 22:39 ` Oliver Neukum
2003-01-23 23:23 ` Doug Ledford
2003-01-23 23:25 ` Matthew Dharm
2003-01-24 15:34 ` Alan Stern
2003-01-24 16:06 ` Oliver Neukum
2003-01-24 17:58 ` [linux-usb-devel] " Doug Ledford
2003-01-24 19:00 ` Luben Tuikov
2003-01-24 22:23 ` Oliver.Neukum
2003-01-24 19:10 ` Luben Tuikov
2003-01-24 19:56 ` [linux-usb-devel] " Alan Stern
2003-01-24 20:11 ` Luben Tuikov
2003-01-24 21:09 ` Luben Tuikov
2003-01-24 21:55 ` Alan Stern
2003-01-24 22:03 ` Luben Tuikov
2003-01-24 23:21 ` Mike Anderson
2003-01-24 21:48 ` Doug Ledford
2003-01-24 22:59 ` Mike Anderson
2003-01-24 23:17 ` [linux-usb-devel] " Doug Ledford
2003-01-25 0:24 ` Luben Tuikov
2003-01-25 1:35 ` Mike Anderson
2003-01-24 23:25 ` Matthew Dharm
2003-01-25 0:05 ` Doug Ledford
2003-01-25 0:45 ` Matthew Dharm
2003-01-25 1:07 ` Doug Ledford
2003-02-02 18:13 ` Matthew Dharm
2003-02-02 20:06 ` Matthew Dharm
2003-02-03 17:17 ` Mike Anderson
2003-02-16 21:18 ` Matthew Dharm
2003-02-17 19:37 ` Mike Anderson
2003-02-17 19:51 ` Patrick Mansfield
2003-02-23 7:48 ` Matthew Dharm
2003-02-26 23:37 ` Mike Anderson
2003-02-27 1:10 ` Matthew Dharm
2003-02-27 6:37 ` Mike Anderson
2003-02-27 19:32 ` Matthew Dharm
2003-03-01 1:41 ` Matthew Dharm
2003-02-02 3:49 ` Matthew Dharm
2003-01-25 1:24 ` Luben Tuikov
2003-01-24 0:15 ` Patrick Mansfield
2003-01-24 8:33 ` David Brownell
2003-01-23 20:41 ` A different look at block device hotswap in the Linux kernel Steven Dake
2003-01-23 21:07 ` Matthew Jacob
2003-01-23 21:06 ` Steven Dake
2003-01-23 21:16 ` Matthew Jacob
2003-01-24 0:07 ` Oliver Neukum
2003-01-24 0:21 ` Matthew Jacob
2003-01-24 7:53 ` David Brownell
2003-01-24 15:26 ` Matthew Jacob
2003-01-24 0:54 ` Steven Dake
2003-01-24 2:35 ` [linux-usb-devel] " Matthew Dharm
2003-01-22 21:30 ` [linux-usb-devel] Re: [PATCH] USB changes for 2.5.58 David Brownell
2003-01-20 22:16 ` Luben Tuikov
2003-01-20 22:51 ` David Brownell
2003-01-20 23:27 ` Oliver Neukum
2003-01-22 12:07 Bennie J. Venter
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=200301232040.41862.oliver@neukum.name \
--to=oliver@neukum.name \
--cc=andmike@us.ibm.com \
--cc=david-b@pacbell.net \
--cc=greg@kroah.com \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-usb-devel@lists.sourceforge.net \
--cc=luben@splentec.com \
--cc=mdharm-scsi@one-eyed-alien.net \
--cc=stern@rowland.harvard.edu \
/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