mirror of
https://github.com/SCST-project/scst.git
synced 2026-08-17 04:36:22 +00:00
Patch from Cheng Renquan <crquan@gmail.com>
This is needed to build qla2xxx on top of 2.6.26 and 2.6.27 Linux kernels according this scst-devel mailing list thread, http://sourceforge.net/mailarchive/message.php?msg_name=1288289831-23405-1-git-send-email-crquan@gmail.com git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@2716 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
From: Cheng Renquan <crquan@gmail.com>
|
||||
|
||||
This is needed to build qla2xxx on top of 2.6.26 and
|
||||
2.6.27 Linux kernels according this scst-devel mailing list thread,
|
||||
http://sourceforge.net/mailarchive/message.php?msg_name=1288289831-23405-1-git-send-email-crquan@gmail.com
|
||||
|
||||
---
|
||||
drivers/scsi/scsi_transport_fc.c | 53 +++++++++++++++++++--------------------
|
||||
include/scsi/scsi_transport_fc.h | 27 +++++++++++++++++++
|
||||
2 files changed, 53 insertions(+), 27 deletions(-)
|
||||
|
||||
Index: linux-2.6.26/drivers/scsi/scsi_transport_fc.c
|
||||
===================================================================
|
||||
--- linux-2.6.26.orig/drivers/scsi/scsi_transport_fc.c 2010-11-12 01:16:11.000000000 +0800
|
||||
+++ linux-2.6.26/drivers/scsi/scsi_transport_fc.c 2010-11-12 01:17:09.000000000 +0800
|
||||
@@ -41,30 +41,7 @@
|
||||
static int fc_queue_work(struct Scsi_Host *, struct work_struct *);
|
||||
static void fc_vport_sched_delete(struct work_struct *work);
|
||||
|
||||
-/*
|
||||
- * This is a temporary carrier for creating a vport. It will eventually
|
||||
- * be replaced by a real message definition for sgio or netlink.
|
||||
- *
|
||||
- * fc_vport_identifiers: This set of data contains all elements
|
||||
- * to uniquely identify and instantiate a FC virtual port.
|
||||
- *
|
||||
- * Notes:
|
||||
- * symbolic_name: The driver is to append the symbolic_name string data
|
||||
- * to the symbolic_node_name data that it generates by default.
|
||||
- * the resulting combination should then be registered with the switch.
|
||||
- * It is expected that things like Xen may stuff a VM title into
|
||||
- * this field.
|
||||
- */
|
||||
-struct fc_vport_identifiers {
|
||||
- u64 node_name;
|
||||
- u64 port_name;
|
||||
- u32 roles;
|
||||
- bool disable;
|
||||
- enum fc_port_type vport_type; /* only FC_PORTTYPE_NPIV allowed */
|
||||
- char symbolic_name[FC_VPORT_SYMBOLIC_NAMELEN];
|
||||
-};
|
||||
-
|
||||
-static int fc_vport_create(struct Scsi_Host *shost, int channel,
|
||||
+static int fc_vport_setup(struct Scsi_Host *shost, int channel,
|
||||
struct device *pdev, struct fc_vport_identifiers *ids,
|
||||
struct fc_vport **vport);
|
||||
|
||||
@@ -1759,7 +1736,7 @@
|
||||
vid.disable = false; /* always enabled */
|
||||
|
||||
/* we only allow support on Channel 0 !!! */
|
||||
- stat = fc_vport_create(shost, 0, &shost->shost_gendev, &vid, &vport);
|
||||
+ stat = fc_vport_setup(shost, 0, &shost->shost_gendev, &vid, &vport);
|
||||
return stat ? stat : count;
|
||||
}
|
||||
static FC_DEVICE_ATTR(host, vport_create, S_IWUSR, NULL,
|
||||
@@ -3102,7 +3079,7 @@
|
||||
|
||||
|
||||
/**
|
||||
- * fc_vport_create - allocates and creates a FC virtual port.
|
||||
+ * fc_vport_setup - allocates and creates a FC virtual port.
|
||||
* @shost: scsi host the virtual port is connected to.
|
||||
* @channel: Channel on shost port connected to.
|
||||
* @pdev: parent device for vport
|
||||
@@ -3117,7 +3094,7 @@
|
||||
* This routine assumes no locks are held on entry.
|
||||
*/
|
||||
static int
|
||||
-fc_vport_create(struct Scsi_Host *shost, int channel, struct device *pdev,
|
||||
+fc_vport_setup(struct Scsi_Host *shost, int channel, struct device *pdev,
|
||||
struct fc_vport_identifiers *ids, struct fc_vport **ret_vport)
|
||||
{
|
||||
struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
|
||||
@@ -3230,6 +3207,28 @@
|
||||
return error;
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * fc_vport_create - Admin App or LLDD requests creation of a vport
|
||||
+ * @shost: scsi host the virtual port is connected to.
|
||||
+ * @channel: channel on shost port connected to.
|
||||
+ * @ids: The world wide names, FC4 port roles, etc for
|
||||
+ * the virtual port.
|
||||
+ *
|
||||
+ * Notes:
|
||||
+ * This routine assumes no locks are held on entry.
|
||||
+ */
|
||||
+struct fc_vport *
|
||||
+fc_vport_create(struct Scsi_Host *shost, int channel,
|
||||
+ struct fc_vport_identifiers *ids)
|
||||
+{
|
||||
+ int stat;
|
||||
+ struct fc_vport *vport;
|
||||
+
|
||||
+ stat = fc_vport_setup(shost, channel, &shost->shost_gendev,
|
||||
+ ids, &vport);
|
||||
+ return stat ? NULL : vport;
|
||||
+}
|
||||
+EXPORT_SYMBOL(fc_vport_create);
|
||||
|
||||
/**
|
||||
* fc_vport_terminate - Admin App or LLDD requests termination of a vport
|
||||
Index: linux-2.6.26/include/scsi/scsi_transport_fc.h
|
||||
===================================================================
|
||||
--- linux-2.6.26.orig/include/scsi/scsi_transport_fc.h 2010-11-12 01:16:11.000000000 +0800
|
||||
+++ linux-2.6.26/include/scsi/scsi_transport_fc.h 2010-11-12 01:17:47.000000000 +0800
|
||||
@@ -198,6 +198,31 @@
|
||||
*/
|
||||
|
||||
#define FC_VPORT_SYMBOLIC_NAMELEN 64
|
||||
+#define FC_VPORT_CREATE_DEFINED
|
||||
+
|
||||
+/*
|
||||
+ * This is a temporary carrier for creating a vport. It will eventually
|
||||
+ * be replaced by a real message definition for sgio or netlink.
|
||||
+ *
|
||||
+ * fc_vport_identifiers: This set of data contains all elements
|
||||
+ * to uniquely identify and instantiate a FC virtual port.
|
||||
+ *
|
||||
+ * Notes:
|
||||
+ * symbolic_name: The driver is to append the symbolic_name string data
|
||||
+ * to the symbolic_node_name data that it generates by default.
|
||||
+ * the resulting combination should then be registered with the switch.
|
||||
+ * It is expected that things like Xen may stuff a VM title into
|
||||
+ * this field.
|
||||
+ */
|
||||
+struct fc_vport_identifiers {
|
||||
+ u64 node_name;
|
||||
+ u64 port_name;
|
||||
+ u32 roles;
|
||||
+ bool disable;
|
||||
+ enum fc_port_type vport_type; /* only FC_PORTTYPE_NPIV allowed */
|
||||
+ char symbolic_name[FC_VPORT_SYMBOLIC_NAMELEN];
|
||||
+};
|
||||
+
|
||||
struct fc_vport {
|
||||
/* Fixed Attributes */
|
||||
|
||||
@@ -732,6 +757,8 @@
|
||||
* be sure to read the Vendor Type and ID formatting requirements
|
||||
* specified in scsi_netlink.h
|
||||
*/
|
||||
+struct fc_vport *fc_vport_create(struct Scsi_Host *shost, int channel,
|
||||
+ struct fc_vport_identifiers *ids);
|
||||
int fc_vport_terminate(struct fc_vport *vport);
|
||||
|
||||
#endif /* SCSI_TRANSPORT_FC_H */
|
||||
Reference in New Issue
Block a user