James,

thanks for the feedback.

On Mon, Aug 20, 2007 at 09:07:23PM -0400, James Smart wrote:
> I'd prefer a flag/bit in the fc template to indicate no scanning by the
> transport. Thus, it's up to the driver to call __scsi_add_device, or
> perform the appropriate scans...

I attached a new patch that adds a flag to the fc template. So far, it
is untested. What is the better approach? Avoid scanning with the flag
being 1 or use the 1 to enable scaning and make this change in all FC
drivers?

> Note: this doesn't stop the problem in absolute. as long as there's scan
> interfaces via sysfs, any tool/admin could request a scan and hit your
> issues. To truly solve it, you need, within the LLDD, to munge what the
> midlayer sees for LUN lists.

We had the discussion about zfcp inventing LUNs in the past
(http://www.spinics.net/lists/linux-scsi/msg17125.html).

Disabling the scanning in the FC transport class is the most important
step at the moment, since the admin can only prevent the warning
messages by changing the LUN 0 to something else on the storage
system. I think for the user requested scan, we can now advice the
user not to issue it for zfcp, if he does anyway he will simply get
the warning message.

Christof Schmitt

---
 drivers/scsi/scsi_transport_fc.c |    4 +++-
 include/scsi/scsi_transport_fc.h |    3 +++
 2 files changed, 6 insertions(+), 1 deletion(-)

--- linux-2.6.orig/drivers/scsi/scsi_transport_fc.c
+++ linux-2.6/drivers/scsi/scsi_transport_fc.c
@@ -2988,10 +2988,12 @@ fc_scsi_scan_rport(struct work_struct *w
        struct fc_rport *rport =
                container_of(work, struct fc_rport, scan_work);
        struct Scsi_Host *shost = rport_to_shost(rport);
+       struct fc_internal *i = to_fc_internal(shost->transportt);
        unsigned long flags;
 
        if ((rport->port_state == FC_PORTSTATE_ONLINE) &&
-           (rport->roles & FC_PORT_ROLE_FCP_TARGET)) {
+           (rport->roles & FC_PORT_ROLE_FCP_TARGET) &&
+           !(i->f->no_target_scan)) {
                scsi_scan_target(&rport->dev, rport->channel,
                        rport->scsi_target_id, SCAN_WILD_CARD, 1);
        }
--- linux-2.6.orig/include/scsi/scsi_transport_fc.h
+++ linux-2.6/include/scsi/scsi_transport_fc.h
@@ -632,6 +632,9 @@ struct fc_function_template {
        unsigned long   show_host_fabric_name:1;
        unsigned long   show_host_symbolic_name:1;
        unsigned long   show_host_system_hostname:1;
+
+       /* The driver can disable the LUN scanning from the FC transport class 
*/
+       unsigned long   no_target_scan:1;
 };
 
 

---
 drivers/s390/scsi/zfcp_scsi.c |    1 +
 1 file changed, 1 insertion(+)

--- linux-2.6.orig/drivers/s390/scsi/zfcp_scsi.c
+++ linux-2.6/drivers/s390/scsi/zfcp_scsi.c
@@ -800,6 +800,7 @@ struct fc_function_template zfcp_transpo
        .show_host_port_type = 1,
        .show_host_speed = 1,
        .show_host_port_id = 1,
+       .no_target_scan = 1,
 };
 
 /**
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to