summaryrefslogtreecommitdiff
path: root/include/scsi/scsi_transport_fc.h
diff options
context:
space:
mode:
authorJames Bottomley <jejb@titanic.(none)>2005-11-05 07:29:52 +0300
committerJames Bottomley <jejb@titanic.(none)>2005-11-05 07:29:52 +0300
commit849a8924a6740ecbf9711e015beca69425f0c429 (patch)
tree2bae44c5fb170a655696b7253eec7ee13c6fa437 /include/scsi/scsi_transport_fc.h
parent7015faa7df829876a0f931cd18aa6d7c24a1b581 (diff)
parentee807c2d43b54183c16580857837dae8ccb2ed22 (diff)
downloadlinux-849a8924a6740ecbf9711e015beca69425f0c429.tar.xz
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.h33
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)