diff options
author | James Bottomley <jejb@titanic.(none)> | 2005-11-04 22:29:52 -0600 |
---|---|---|
committer | James Bottomley <jejb@titanic.(none)> | 2005-11-04 22:29:52 -0600 |
commit | 849a8924a6740ecbf9711e015beca69425f0c429 (patch) | |
tree | 2bae44c5fb170a655696b7253eec7ee13c6fa437 /include/scsi/scsi_transport_fc.h | |
parent | 7015faa7df829876a0f931cd18aa6d7c24a1b581 (diff) | |
parent | ee807c2d43b54183c16580857837dae8ccb2ed22 (diff) | |
download | linux-849a8924a6740ecbf9711e015beca69425f0c429.tar.gz linux-849a8924a6740ecbf9711e015beca69425f0c429.tar.bz2 linux-849a8924a6740ecbf9711e015beca69425f0c429.zip |
Merge by Hand
Conflicts in dec_esp.c (Thanks Bacchus), scsi_transport_iscsi.c and
scsi_transport_fc.h
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'include/scsi/scsi_transport_fc.h')
-rw-r--r-- | include/scsi/scsi_transport_fc.h | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h index c04405bead2d..fac547d32a98 100644 --- a/include/scsi/scsi_transport_fc.h +++ b/include/scsi/scsi_transport_fc.h @@ -29,6 +29,7 @@ #include <linux/config.h> #include <linux/sched.h> +#include <scsi/scsi.h> struct scsi_transport_template; @@ -385,6 +386,8 @@ struct fc_function_template { struct fc_host_statistics * (*get_fc_host_stats)(struct Scsi_Host *); void (*reset_fc_host_stats)(struct Scsi_Host *); + int (*issue_fc_host_lip)(struct Scsi_Host *); + /* allocation lengths for host-specific data */ u32 dd_fcrport_size; @@ -428,6 +431,34 @@ struct fc_function_template { }; +/** + * fc_remote_port_chkready - called to validate the remote port state + * prior to initiating io to the port. + * + * Returns a scsi result code that can be returned by the LLDD. + * + * @rport: remote port to be checked + **/ +static inline int +fc_remote_port_chkready(struct fc_rport *rport) +{ + int result; + + switch (rport->port_state) { + case FC_PORTSTATE_ONLINE: + result = 0; + break; + case FC_PORTSTATE_BLOCKED: + result = DID_BUS_BUSY << 16; + break; + default: + result = DID_NO_CONNECT << 16; + break; + } + return result; +} + + struct scsi_transport_template *fc_attach_transport( struct fc_function_template *); void fc_release_transport(struct scsi_transport_template *); @@ -436,8 +467,6 @@ struct fc_rport *fc_remote_port_add(struct Scsi_Host *shost, int channel, struct fc_rport_identifiers *ids); void fc_remote_port_delete(struct fc_rport *rport); void fc_remote_port_rolechg(struct fc_rport *rport, u32 roles); -int fc_remote_port_block(struct fc_rport *rport); -void fc_remote_port_unblock(struct fc_rport *rport); int scsi_is_fc_rport(const struct device *); static inline u64 wwn_to_u64(u8 *wwn) |