From: James Smart <James.Smart@Emulex.Com>
To: Mike Christie <michaelc@cs.wisc.edu>
Cc: linux-scsi@vger.kernel.org
Subject: Re: [PATCH] fc_user_scan correction
Date: Tue, 22 Apr 2008 15:04:59 -0400 [thread overview]
Message-ID: <480E36DB.1050708@emulex.com> (raw)
In-Reply-To: <480E2A6A.4040309@cs.wisc.edu>
Mike Christie wrote:
> Mike Christie wrote:
>> Is this is the same as if you did not implement the user_scan callout?
>> scsi_sysfs.c will call
>>
>> scsi_scan_host_selected(shost, channel, id, lun, 1);
>>
>> I thought we added the user_scan callback because the transport
>> classes had to pass in the device struct between the host and target
>> so we got
>>
>> .../host/rport/target/scsi_device
>>
>> instead of
>>
>> .../host/target/scsi_device
>>
>> qla4xxx has the same problem. Do not look at it for help :( It added a
>> mutex and does not deadlock because like the FC class it stats the
>> removal of the rport/session then device so the cache sync always
>> fails (the check ready function always returns DID_NO_CONNECT so the
>> cache sync fails). iscsi tcp/iser/bnx2i works because it has userspace
>> helping out with the removal and shutdown and does it in two stages.
>>
>
> I think we need some loop + locking + refcounting similar to how the
> shost_for_each_device loops over devices.
>
For FC, I don't believe there's any advantage to looping/locking. There's
miniscule advantages of not scanning targets that are just returned back
by the driver as not being present.
Taking another look at the user_scan sysfs routine, I can only come up with
a few reasons why it exists at all:
- some transports/LLDs, which do target enumeration and auto-scan, can't
handle directed scans to targets that don't exist. I have a hard time
believing this is true.
- There's some performance advantage for walking the transport target
list rather than cycling on the target ids. But, this interface can't
performance sensitive. This is the only reason I can see why user_scan
exists (to filter out non-existent targets).
- The "rescan" flag needs to be clean. For transports that auto-scan,
they have the best knowledge of when rescan should be 0 or 1. This
protects against a race between the user scan and the 1st-time target
discovery.
Hmm... this last point gives me concern, as I didn't fix it either.
Thoughts ? I'm happy leaving it as the default, but the rescan bothers me.
-- james s
next prev parent reply other threads:[~2008-04-22 19:05 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-22 17:28 [PATCH] fc_user_scan correction James Smart
2008-04-22 18:10 ` Mike Christie
2008-04-22 18:11 ` Mike Christie
2008-04-22 19:04 ` James Smart [this message]
2008-04-22 19:46 ` Mike Christie
2008-04-22 21:30 ` James Smart
2008-04-22 19:51 ` Mike Christie
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=480E36DB.1050708@emulex.com \
--to=james.smart@emulex.com \
--cc=linux-scsi@vger.kernel.org \
--cc=michaelc@cs.wisc.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.