]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/s390/scsi/zfcp_def.h
Merge branches 'softirq-for-linus', 'x86-debug-for-linus', 'x86-numa-for-linus',...
[mv-sheeva.git] / drivers / s390 / scsi / zfcp_def.h
index e1c6b6e05a75ea6e66b8cc4e2a18ebc84b3be1e3..9ae1d0a6f6271383b5afadd9bd0fff75aaf0e614 100644 (file)
@@ -85,8 +85,8 @@ struct zfcp_reqlist;
 #define ZFCP_STATUS_PORT_LINK_TEST             0x00000002
 
 /* logical unit status */
-#define ZFCP_STATUS_UNIT_SHARED                        0x00000004
-#define ZFCP_STATUS_UNIT_READONLY              0x00000008
+#define ZFCP_STATUS_LUN_SHARED                 0x00000004
+#define ZFCP_STATUS_LUN_READONLY               0x00000008
 
 /* FSF request status (this does not have a common part) */
 #define ZFCP_STATUS_FSFREQ_TASK_MANAGEMENT     0x00000002
@@ -118,7 +118,7 @@ struct zfcp_erp_action {
        int action;                   /* requested action code */
        struct zfcp_adapter *adapter; /* device which should be recovered */
        struct zfcp_port *port;
-       struct zfcp_unit *unit;
+       struct scsi_device *sdev;
        u32             status;       /* recovery status */
        u32 step;                     /* active step of this erp action */
        unsigned long           fsf_req_id;
@@ -219,20 +219,65 @@ struct zfcp_port {
        unsigned int            starget_id;
 };
 
+/**
+ * struct zfcp_unit - LUN configured via zfcp sysfs
+ * @dev: struct device for sysfs representation and reference counting
+ * @list: entry in LUN/unit list per zfcp_port
+ * @port: reference to zfcp_port where this LUN is configured
+ * @fcp_lun: 64 bit LUN value
+ * @scsi_work: for running scsi_scan_target
+ *
+ * This is the representation of a LUN that has been configured for
+ * usage. The main data here is the 64 bit LUN value, data for
+ * running I/O and recovery is in struct zfcp_scsi_dev.
+ */
 struct zfcp_unit {
-       struct device          dev;
-       struct list_head       list;           /* list of logical units */
-       struct zfcp_port       *port;          /* remote port of unit */
-       atomic_t               status;         /* status of this logical unit */
-       u64                    fcp_lun;        /* own FCP_LUN */
-       u32                    handle;         /* handle assigned by FSF */
-        struct scsi_device     *device;        /* scsi device struct pointer */
-       struct zfcp_erp_action erp_action;     /* pending error recovery */
-        atomic_t               erp_counter;
-       struct zfcp_latencies   latencies;
+       struct device           dev;
+       struct list_head        list;
+       struct zfcp_port        *port;
+       u64                     fcp_lun;
        struct work_struct      scsi_work;
 };
 
+/**
+ * struct zfcp_scsi_dev - zfcp data per SCSI device
+ * @status: zfcp internal status flags
+ * @lun_handle: handle from "open lun" for issuing FSF requests
+ * @erp_action: zfcp erp data for opening and recovering this LUN
+ * @erp_counter: zfcp erp counter for this LUN
+ * @latencies: FSF channel and fabric latencies
+ * @port: zfcp_port where this LUN belongs to
+ */
+struct zfcp_scsi_dev {
+       atomic_t                status;
+       u32                     lun_handle;
+       struct zfcp_erp_action  erp_action;
+       atomic_t                erp_counter;
+       struct zfcp_latencies   latencies;
+       struct zfcp_port        *port;
+};
+
+/**
+ * sdev_to_zfcp - Access zfcp LUN data for SCSI device
+ * @sdev: scsi_device where to get the zfcp_scsi_dev pointer
+ */
+static inline struct zfcp_scsi_dev *sdev_to_zfcp(struct scsi_device *sdev)
+{
+       return scsi_transport_device_data(sdev);
+}
+
+/**
+ * zfcp_scsi_dev_lun - Return SCSI device LUN as 64 bit FCP LUN
+ * @sdev: SCSI device where to get the LUN from
+ */
+static inline u64 zfcp_scsi_dev_lun(struct scsi_device *sdev)
+{
+       u64 fcp_lun;
+
+       int_to_scsilun(sdev->lun, (struct scsi_lun *)&fcp_lun);
+       return fcp_lun;
+}
+
 /**
  * struct zfcp_fsf_req - basic FSF request structure
  * @list: list of FSF requests
@@ -249,7 +294,6 @@ struct zfcp_unit {
  * @erp_action: reference to erp action if request issued on behalf of ERP
  * @pool: reference to memory pool if used for this request
  * @issued: time when request was send (STCK)
- * @unit: reference to unit if this request is a SCSI request
  * @handler: handler which should be called to process response
  */
 struct zfcp_fsf_req {
@@ -267,7 +311,6 @@ struct zfcp_fsf_req {
        struct zfcp_erp_action  *erp_action;
        mempool_t               *pool;
        unsigned long long      issued;
-       struct zfcp_unit        *unit;
        void                    (*handler)(struct zfcp_fsf_req *);
 };
 
@@ -282,9 +325,4 @@ struct zfcp_data {
        struct kmem_cache       *adisc_cache;
 };
 
-/********************** ZFCP SPECIFIC DEFINES ********************************/
-
-#define ZFCP_SET                0x00000100
-#define ZFCP_CLEAR              0x00000200
-
 #endif /* ZFCP_DEF_H */