From: Luben Tuikov <luben_tuikov@adaptec.com>
To: James Bottomley <James.Bottomley@SteelEye.com>
Cc: Alan Stern <stern@rowland.harvard.edu>,
SCSI development list <linux-scsi@vger.kernel.org>,
Mohammed Sameer <uniball@gmx.net>,
USB users list <linux-usb-users@lists.sourceforge.net>
Subject: Re: BUG: CD driver sends command during host removal
Date: Wed, 29 Sep 2004 14:58:43 -0400 [thread overview]
Message-ID: <415B05E3.10300@adaptec.com> (raw)
In-Reply-To: <1096481358.2123.74.camel@mulgrave>
James Bottomley wrote:
> On Wed, 2004-09-29 at 14:02, Luben Tuikov wrote:
>
>>>According to Documentation/scsi/scsi_mid_low_api.txt, the only possible
>>>error returns are SCSI_MLQUEUE_DEVICE_BUSY and SCSI_MLQUEUE_HOST_BUSY.
>>>Neither is appropriate; should the second one be returned?
>>
>>I believe internally SCSI Core returns DID_ERROR.
>
>
> For a device that no-longer exists, DID_NO_CONNECT is probably the most
> appropriately descriptive.
Does this mean that scsi_device_cancel() should set the result
code to DID_NO_CONNECT either?
>>>>>This would involve a race, because it's possible for
>>>>>queuecommand to accept a command and then scsi_remove_host() to be called
>>>>>before the command is carried out.
>
>
> Correct, scsi_remove_host() is asynchronous ... you can get requests
> after calling it while the queue is halting ... you must error these.
>
>
>>>If the command belongs to the LLDD, why does scsi_remove_host do the
>>>following:
>>>
>>> calls scsi_host_cancel,
>>> which calls scsi_device_cancel_cb for each device,
>>> which calls scsi_device_cancel,
>>> which calls scsi_finish_command for each active command,
>>> which passes the command back to the upper layer
>>>
>>>Either there's a bug in the host removal sequence, or else the LLDD
>>>doesn't own any requests once scsi_remove_host has been called.
>
>
> Right. scsi_remove_host tells the mid-layer that it's OK to trash all
> inflight commands because you removed all their users before calling
> it. It also tells us that you won't accept any future commands for this
> host (because you'll error any attempt in queuecommand).
Do you mean to say that when scsi_remove_host() is called,
the LLDD must no own any commands? This is good, it means
that the LLDD plugged queuecommand(), did "recovery" of
pending commands and is ready for slave_destroy().
But does this also mean that scsi_device_cancel() (cancel_pending_io)
is unnecessary in the scsi_remove_host() path as there's no
outstanding IO to the host?
Luben
next prev parent reply other threads:[~2004-09-29 18:59 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20040926082926.GA1944@uniball>
2004-09-27 18:18 ` BUG: CD driver sends command during host removal Alan Stern
2004-09-27 18:51 ` Mohammed Sameer
2004-09-29 16:06 ` Luben Tuikov
2004-09-29 16:55 ` Alan Stern
2004-09-29 17:09 ` Mike Anderson
2004-09-29 18:02 ` Luben Tuikov
2004-09-29 18:09 ` James Bottomley
2004-09-29 18:58 ` Luben Tuikov [this message]
2004-09-29 19:39 ` James Bottomley
2004-09-29 19:01 ` Alan Stern
2004-09-29 19:27 ` Mike Anderson
2004-09-29 19:33 ` Luben Tuikov
2004-09-29 19:50 ` James Bottomley
2004-09-29 20:31 ` Mike Anderson
2004-09-29 20:41 ` James Bottomley
2004-09-29 21:07 ` Mike Anderson
2004-09-29 21:14 ` James Bottomley
2004-09-29 21:20 ` Luben Tuikov
2004-09-29 21:26 ` James Bottomley
2004-09-29 21:20 ` Alan Stern
2004-10-02 23:57 ` Mohammed Sameer
2004-10-11 19:20 Alan Stern
2004-10-11 19:36 ` James Bottomley
2004-10-11 20:03 ` Alan Stern
2004-10-11 20:12 ` James Bottomley
2004-10-11 20:40 ` Mike Anderson
2004-10-11 21:15 ` James Bottomley
2004-10-11 23:13 ` Mike Anderson
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=415B05E3.10300@adaptec.com \
--to=luben_tuikov@adaptec.com \
--cc=James.Bottomley@SteelEye.com \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-usb-users@lists.sourceforge.net \
--cc=stern@rowland.harvard.edu \
--cc=uniball@gmx.net \
/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).