linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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



  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).