From: Mike Christie <michaelc@cs.wisc.edu>
To: James.Smart@Emulex.Com
Cc: linux-scsi@vger.kernel.org
Subject: Re: [PATCH] fc_user_scan correction
Date: Tue, 22 Apr 2008 14:46:30 -0500 [thread overview]
Message-ID: <480E4096.8070201@cs.wisc.edu> (raw)
In-Reply-To: <480E36DB.1050708@emulex.com>
James Smart wrote:
>
>
> 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.
I was actually just thinking of refcounting. Because we are coming in
from the host the rpot would not have a refcount from the
sysfs/userpscae reference. If there were no scsi_devices/targets on the
rport and the rport ie being removed then I thought the scsi_scan.c code
could be accessing a struct device that was freed or in the middle of
being freed.
>
> 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.
I am not sure what you are saying? Is this the same as my comment about
.../host/rport/target/scsi_device
vs
.../host/target/scsi_device
If you go down scsi_scan_host_selected then we go to
scsi_scan_host_selected -> scsi_scan_channel -> __scsi_scan_target and
the parent that is passed to __scsi_scan_target is the shost, so we get
.../host/target/scsi_device
For the transport classes we did scsi_scan_target and pass the rport so
we end up with
.../host/rport/target/scsi_device
next prev parent reply other threads:[~2008-04-22 19:46 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
2008-04-22 19:46 ` Mike Christie [this message]
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=480E4096.8070201@cs.wisc.edu \
--to=michaelc@cs.wisc.edu \
--cc=James.Smart@Emulex.Com \
--cc=linux-scsi@vger.kernel.org \
/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.