From: Matthew Wilcox <matthew@wil.cx>
To: James Smart <James.Smart@Emulex.Com>
Cc: linux-scsi@vger.kernel.org, tore@linpro.no
Subject: Re: [Patch] plug async scan race at 1st node scan
Date: Mon, 20 Aug 2007 08:32:43 -0600 [thread overview]
Message-ID: <20070820143243.GF30019@parisc-linux.org> (raw)
In-Reply-To: <46C99F05.7070404@emulex.com>
On Mon, Aug 20, 2007 at 10:02:45AM -0400, James Smart wrote:
> Well - depends on what the semantics of scan_start are.... to date, there
> really are none.... and what does requiring it mean ?
OK, and to make this discussion exceptionally useful, all comments are
to be made in the context of modifications to the documentation:
/*
* If the host wants to be called before the scan starts, but
* after the midlayer has set up ready for the scan, it can fill
* in this function.
*/
When I say "require it", I mean that currently we have the code:
if (shost->hostt->scan_finished) {
unsigned long start = jiffies;
if (shost->hostt->scan_start)
shost->hostt->scan_start(shost);
I propose removing that second 'if':
if (shost->hostt->scan_finished) {
unsigned long start = jiffies;
shost->hostt->scan_start(shost);
And here's my proposal for new documentation for scan_start():
/*
* If the host fills in scan_finished, above, it must also fill in
* scan_start. scan_start will be called by the midlayer to inform
* the host that it is now ready to receive requests to scan targets.
*/
> What's implied is that you want "bring up link" to be enabled in
> scan_start().
That's certainly one obvious way to do it. Another way would be to have
a flag in the driver blocking calls to the midlayer ... I think you have
that already?
> Doable, but the code paths weren't put together expecting this, so it may be
> a bit of work. I'll have to look at it. Also, you're asking me to fix one
> driver, without thinking about the structure in others.... I'd rather the
> api itself locked down state/behavior, not simply the LLD coding.
I think other drivers already do this. We only have three drivers
currently using this API -- lpfc, qla2xxx and aic94xx. asd_scan_start()
enables the PHYs. qla2xxx_scan_start sets some bits, but I'm not quite
sure of their effect.
> Before starting, I'd rather we setting on what the semantics of the api is.
> To the uninitiated, requiring a driver to call scsi_scan_host(), when the
> transport drives all discovery, and where the scan_host really has nothing
> to do with scanning, but rather creates a firewall delay to hold off
> serializing
> of device enumerations - is all very confusing. I'd rather we had a
> different
> entry point for those things that supply start/finish routines and it was
> named more in line with "start discovery delay".
The name certainly isn't great, but I thought we agreed that having a
common entry point for all SCSI hosts was a good idea.
> Adding the notion of scan_start bringing up the link sounds reasonable.
> However,
> how does this translate to other bus types ?
It works for SAS and FC ... I don't see why it wouldn't work for other
bus types. Obviously, we don't call it for SPI.
> -- james s
>
> Matthew Wilcox wrote:
> >On Mon, Aug 20, 2007 at 09:10:35AM -0400, James Smart wrote:
> >>In testing 2.6.23-rc3, there is a small window where the async-per-target
> >>scan of the transport can beat the call from the LLDD to scsi_scan_host().
> >
> >I'd assumed that events wouldn't come in until ->scan_start was called.
> >I see lpfc doesn't have one; is it possible to restructure it to have one?
> >
> >(In any case, good job tracking this down; it was really annoying me.)
> >
> >Possibly we should be less forgiving, and require drivers to have a
> >scan_start, otherwise they can't avoid this race.
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."
next prev parent reply other threads:[~2007-08-20 14:32 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-20 13:10 [Patch] plug async scan race at 1st node scan James Smart
2007-08-20 13:49 ` Matthew Wilcox
2007-08-20 14:02 ` James Smart
2007-08-20 14:32 ` Matthew Wilcox [this message]
2008-03-01 11:44 ` Mike Christie
2008-03-01 14:26 ` Matthew Wilcox
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=20070820143243.GF30019@parisc-linux.org \
--to=matthew@wil.cx \
--cc=James.Smart@Emulex.Com \
--cc=linux-scsi@vger.kernel.org \
--cc=tore@linpro.no \
/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.