From: Luben Tuikov <luben_tuikov@adaptec.com>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Mike Anderson <andmike@us.ibm.com>,
SCSI development list <linux-scsi@vger.kernel.org>
Subject: Re: Synchronizing scsi_remove_host and the error handler
Date: Mon, 08 Aug 2005 14:04:09 -0400 [thread overview]
Message-ID: <42F79E99.9000809@adaptec.com> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0508071041110.28316-100000@netrider.rowland.org>
On 08/07/05 10:59, Alan Stern wrote:
> Mike:
>
> What sort of synchronization is there between scsi_remove_host and the
> error-handler thread? Offhand I can see two possible problems, depending
> on how the LLD is written:
>
> 1. The error handler asks the LLD to perform a reset just as the LLD
> calls scsi_remove_host as part of rmmod. scsi_remove_host
> returns, the LLD's remove method returns, and the LLD is unloaded
> from memory while its reset routine is executing.
>
> 2. The error handler asks the LLD to perform a reset just before the
> LLD calls scsi_remove_host. The LLD's remove method can't return
> until the reset completes (otherwise the reset would be executing
> code that is about to be unloaded, as in (1)). But the reset
> can't get started until it acquires the host adapter's device
> semaphore, which is owned by the rmmod thread.
>
> (1) causes an oops and (2) causes a deadlock. Note that (1) can be
> avoided by making scis_remove_host wait until the error handler thread has
> exited, but that will make (2) much more likely to happen.
Hmm, this doesn't sound good.
I'm thinking, if the LLDD knows that it's being unloaded, then it can
return the EH reset with success de facto.
> In general, there needs to be some way for the error handler to prevent
> the LLD from being unloaded. I don't know what the best answer is. Has
> anyone thought about this?
Two ways:
1) Let one entity be the active one and the other the passive one,
always. That is, let the LLDD send an "event" and then let the
Managing layer decide what to do.
2) Tack a kobject, or kset to each struct you have and set the
parent pointer accordingly to how the struct objects relate
to each other. So in effect, the kobj relationship would
represent how those objects actually relate to each other
in the kernel. Advantage you get is the automatic kref.
... or something like this. ;-)
Luben
prev parent reply other threads:[~2005-08-08 18:04 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-08-07 14:59 Synchronizing scsi_remove_host and the error handler Alan Stern
2005-08-07 15:36 ` James Bottomley
2005-08-07 18:43 ` Alan Stern
2005-08-07 21:57 ` James Bottomley
2005-08-08 18:24 ` Luben Tuikov
2005-08-08 19:54 ` Mike Anderson
2005-08-08 20:25 ` Luben Tuikov
2005-08-08 20:06 ` Mike Anderson
2005-08-07 22:15 ` Stefan Richter
2005-08-08 20:41 ` Alan Stern
2005-08-08 21:36 ` Mike Anderson
2005-08-08 22:36 ` Alan Stern
2005-08-08 23:10 ` Stefan Richter
2005-08-09 14:23 ` Alan Stern
2005-08-09 19:37 ` Stefan Richter
2005-08-09 20:07 ` Alan Stern
2005-08-09 20:45 ` Stefan Richter
2005-08-08 23:59 ` Stefan Richter
2005-08-09 14:40 ` Alan Stern
2005-08-09 18:21 ` Stefan Richter
2005-08-09 18:49 ` Alan Stern
2005-08-08 21:49 ` Stefan Richter
2005-08-08 22:20 ` Luben Tuikov
2005-08-08 22:30 ` Alan Stern
2005-08-09 0:49 ` Luben Tuikov
2005-08-09 14:50 ` Alan Stern
2005-08-08 22:23 ` James Bottomley
2005-08-08 22:40 ` Alan Stern
2005-08-08 18:07 ` Luben Tuikov
2005-08-08 18:04 ` Luben Tuikov [this message]
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=42F79E99.9000809@adaptec.com \
--to=luben_tuikov@adaptec.com \
--cc=andmike@us.ibm.com \
--cc=linux-scsi@vger.kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.