public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrew Vasquez <andrew.vasquez@qlogic.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: Linux-SCSI Mailing List <linux-scsi@vger.kernel.org>,
	James Bottomley <James.Bottomley@SteelEye.com>
Subject: Re: PATCH [2/5]  qla2xxx: add remote port codes...
Date: Tue, 19 Apr 2005 00:27:51 -0700	[thread overview]
Message-ID: <20050419072751.GD5999@plap.qlogic.org> (raw)
In-Reply-To: <20050413214023.GA18161@infradead.org>

On Wed, 13 Apr 2005, Christoph Hellwig wrote:

> >  	atomic_set(&fcport->state, FCS_ONLINE);
> > +	if (ha->flags.init_done)
> > +		qla2x00_reg_remote_port(ha, fcport);
> >  }
> 
> ...
> 
> > -		goto probe_failed;
> > +		goto probe_alloc_failed;
> >  	}
> >  
> > +	pci_set_drvdata(pdev, ha);
> > +	host->this_id = 255;
> > +	host->cmd_per_lun = 3;
> > +	host->unique_id = ha->instance;
> > +	host->max_cmd_len = MAX_CMDSZ;
> > +	host->max_channel = ha->ports - 1;
> > +	host->max_id = ha->max_targets;
> > +	host->max_lun = ha->max_luns;
> > +	host->transportt = qla2xxx_transport_template;
> > +	if (scsi_add_host(host, &pdev->dev))
> > +		goto probe_alloc_failed;
> > +
> > +	qla2x00_alloc_sysfs_attr(ha);
> > +
> >  	if (qla2x00_initialize_adapter(ha) &&
> >  	    !(ha->device_flags & DFLG_NO_CABLE)) {
> 
> Now this I don't undersant.  You're moving the host registration earlier,
> maybe too earlier but I haven't checked that yet,
>

Yeah, that hunk is a residual of some other (trashy) changes I made
during early fc_rport integration and really should be reverted back
to the original...

> why do you still need
> the special case for delaying registration of the targets?
> 

Ok, this is actually a concern I have with the current fc_rport
implementation (and yes, I realize I'm a day late) -- the auto-scan
logic employed during the creation of the fc_rport (via
fc_remote_port_add()).

Before I get into that though, let me answer your question -- the
reason I post-register the ports is because the driver is not ready
(during init-time) to process I/O originating from queuecommand().

This topic was discussed briefly during the implementation of
fc_rport -- some suggestions, if I recall correctly, were to either
block the host or post-register the rport at an appropriate time.
Each options has its caveats -- issuing and fc_remote_port_add() while
the host is blocked of course forces the user to perform a manual
rescan at some later time.  Post-registration on the otherhand still
requires some 'external' port structure (fc_port in the case of
qla2xxx) to exist until fc_rport creation and thus negating the
benefits and purpose of fc_rport->dd_data.  And again, since scanning
occurs immediately for 'target-type' (roles) fc_rports, the
fc_rport->dd_data which one would like to use at slave_alloc() time is
unset (NULL).

Perhaps I'm missing something fundamental -- as I've glanced through
lpfc and see slave_alloc() doing linear scans through its known lists
of ports trying to determine the proper lpfc_nodelist, whereas a:

	rport = fc_remote_port_add() -- would create and fc_rport
					given the rport_identifiers.

	rport->dd_data = <internal port data> -- caller populates
						 rport->dd_data with
						 internal driver
						 structure  (i.e. fc_port)

	fc_remote_port_scan(rport) -- initiate scan.

	  qla2xxx_slave_alloc() implementation would be something like:

		struct fc_rport *rport = starget_to_rport(scsi_target(sdev));
		fc_port_t *fcport;

		if (!rport)
			return -ENXIO;
		fcport = (struct fc_port *) rport->dd_data;
		if (!fcport)
			return -ENXIO;
		...

One possibility (as to not break current functionality) is to add an
addition role modifier, say FC_RPORT_ROLE_NO_SCAN and | it into
rport_ids.roles prior to fc_remote_port_add() to indicate no scanning
should take place during the call.  Then once ready, the driver could
issue the corresponding fc_remote_port_scan() on the rport.

Looking ahead, this may also be useful in the case of port
authentication (i.e. FC-SP).

Does this sound like a reasonable extension?  I'll code up something
in the morning if others are interested?

> Also please propagate the full error that scsi_add_host returned.
> 

Sure, I post another set of patches to address this and the early
host-addition code.

Thanks,
AV

  parent reply	other threads:[~2005-04-19  7:27 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-13 19:15 PATCH [0/5] qla2xxx: remote port rework Andrew Vasquez
2005-04-13 19:18 ` PATCH [1/5] qla2xxx: remove internal queuing Andrew Vasquez
2005-04-13 19:18 ` PATCH [2/5] qla2xxx: add remote port codes Andrew Vasquez
2005-04-13 21:40   ` Christoph Hellwig
2005-04-19  6:33     ` Andrew Vasquez
2005-04-19  7:27     ` Andrew Vasquez [this message]
2005-04-19 21:13       ` Christoph Hellwig
2005-05-20  6:17       ` Jeremy Higdon
2005-05-20 15:15         ` Andrew Vasquez
2005-05-27  7:51           ` Jeremy Higdon
2005-04-17 15:18   ` James Bottomley
2005-04-13 19:18 ` PATCH [3/5] qla2xxx: remove lun discovery codes Andrew Vasquez
2005-04-13 19:19 ` PATCH [4/5] qla2xxx: cleanup DMA mappings Andrew Vasquez
2005-04-13 21:34   ` Christoph Hellwig
2005-04-15 18:06     ` Andrew Vasquez
2005-04-13 19:19 ` PATCH [5/5] qla2xxx: remove /proc interface Andrew Vasquez
2005-04-13 19:42 ` PATCH [0/5] qla2xxx: remote port rework Matthew Wilcox
2005-04-13 20:50 ` PATCH [6/5] qla2xxx: update version :) Andrew Vasquez
2005-04-13 20:57   ` James Bottomley
2005-04-13 21:24     ` Andrew Vasquez
2005-04-19 21:15       ` Christoph Hellwig
2005-04-22  7:22         ` Andrew Vasquez
2005-04-24 10:53           ` Christoph Hellwig
2005-04-13 21:17   ` Christoph Hellwig
2005-04-15 17:38     ` Andrew Vasquez

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=20050419072751.GD5999@plap.qlogic.org \
    --to=andrew.vasquez@qlogic.com \
    --cc=James.Bottomley@SteelEye.com \
    --cc=hch@infradead.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox