diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_def.h')
| -rw-r--r-- | drivers/s390/scsi/zfcp_def.h | 78 |
1 files changed, 58 insertions, 20 deletions
diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h index e1c6b6e05a75..9ae1d0a6f627 100644 --- a/drivers/s390/scsi/zfcp_def.h +++ b/drivers/s390/scsi/zfcp_def.h | |||
| @@ -85,8 +85,8 @@ struct zfcp_reqlist; | |||
| 85 | #define ZFCP_STATUS_PORT_LINK_TEST 0x00000002 | 85 | #define ZFCP_STATUS_PORT_LINK_TEST 0x00000002 |
| 86 | 86 | ||
| 87 | /* logical unit status */ | 87 | /* logical unit status */ |
| 88 | #define ZFCP_STATUS_UNIT_SHARED 0x00000004 | 88 | #define ZFCP_STATUS_LUN_SHARED 0x00000004 |
| 89 | #define ZFCP_STATUS_UNIT_READONLY 0x00000008 | 89 | #define ZFCP_STATUS_LUN_READONLY 0x00000008 |
| 90 | 90 | ||
| 91 | /* FSF request status (this does not have a common part) */ | 91 | /* FSF request status (this does not have a common part) */ |
| 92 | #define ZFCP_STATUS_FSFREQ_TASK_MANAGEMENT 0x00000002 | 92 | #define ZFCP_STATUS_FSFREQ_TASK_MANAGEMENT 0x00000002 |
| @@ -118,7 +118,7 @@ struct zfcp_erp_action { | |||
| 118 | int action; /* requested action code */ | 118 | int action; /* requested action code */ |
| 119 | struct zfcp_adapter *adapter; /* device which should be recovered */ | 119 | struct zfcp_adapter *adapter; /* device which should be recovered */ |
| 120 | struct zfcp_port *port; | 120 | struct zfcp_port *port; |
| 121 | struct zfcp_unit *unit; | 121 | struct scsi_device *sdev; |
| 122 | u32 status; /* recovery status */ | 122 | u32 status; /* recovery status */ |
| 123 | u32 step; /* active step of this erp action */ | 123 | u32 step; /* active step of this erp action */ |
| 124 | unsigned long fsf_req_id; | 124 | unsigned long fsf_req_id; |
| @@ -219,21 +219,66 @@ struct zfcp_port { | |||
| 219 | unsigned int starget_id; | 219 | unsigned int starget_id; |
| 220 | }; | 220 | }; |
| 221 | 221 | ||
| 222 | /** | ||
| 223 | * struct zfcp_unit - LUN configured via zfcp sysfs | ||
| 224 | * @dev: struct device for sysfs representation and reference counting | ||
| 225 | * @list: entry in LUN/unit list per zfcp_port | ||
| 226 | * @port: reference to zfcp_port where this LUN is configured | ||
| 227 | * @fcp_lun: 64 bit LUN value | ||
| 228 | * @scsi_work: for running scsi_scan_target | ||
| 229 | * | ||
| 230 | * This is the representation of a LUN that has been configured for | ||
| 231 | * usage. The main data here is the 64 bit LUN value, data for | ||
| 232 | * running I/O and recovery is in struct zfcp_scsi_dev. | ||
| 233 | */ | ||
| 222 | struct zfcp_unit { | 234 | struct zfcp_unit { |
| 223 | struct device dev; | 235 | struct device dev; |
| 224 | struct list_head list; /* list of logical units */ | 236 | struct list_head list; |
| 225 | struct zfcp_port *port; /* remote port of unit */ | 237 | struct zfcp_port *port; |
| 226 | atomic_t status; /* status of this logical unit */ | 238 | u64 fcp_lun; |
| 227 | u64 fcp_lun; /* own FCP_LUN */ | ||
| 228 | u32 handle; /* handle assigned by FSF */ | ||
| 229 | struct scsi_device *device; /* scsi device struct pointer */ | ||
| 230 | struct zfcp_erp_action erp_action; /* pending error recovery */ | ||
| 231 | atomic_t erp_counter; | ||
| 232 | struct zfcp_latencies latencies; | ||
| 233 | struct work_struct scsi_work; | 239 | struct work_struct scsi_work; |
| 234 | }; | 240 | }; |
| 235 | 241 | ||
| 236 | /** | 242 | /** |
| 243 | * struct zfcp_scsi_dev - zfcp data per SCSI device | ||
| 244 | * @status: zfcp internal status flags | ||
| 245 | * @lun_handle: handle from "open lun" for issuing FSF requests | ||
| 246 | * @erp_action: zfcp erp data for opening and recovering this LUN | ||
| 247 | * @erp_counter: zfcp erp counter for this LUN | ||
| 248 | * @latencies: FSF channel and fabric latencies | ||
| 249 | * @port: zfcp_port where this LUN belongs to | ||
| 250 | */ | ||
| 251 | struct zfcp_scsi_dev { | ||
| 252 | atomic_t status; | ||
| 253 | u32 lun_handle; | ||
| 254 | struct zfcp_erp_action erp_action; | ||
| 255 | atomic_t erp_counter; | ||
| 256 | struct zfcp_latencies latencies; | ||
| 257 | struct zfcp_port *port; | ||
| 258 | }; | ||
| 259 | |||
| 260 | /** | ||
| 261 | * sdev_to_zfcp - Access zfcp LUN data for SCSI device | ||
| 262 | * @sdev: scsi_device where to get the zfcp_scsi_dev pointer | ||
| 263 | */ | ||
| 264 | static inline struct zfcp_scsi_dev *sdev_to_zfcp(struct scsi_device *sdev) | ||
| 265 | { | ||
| 266 | return scsi_transport_device_data(sdev); | ||
| 267 | } | ||
| 268 | |||
| 269 | /** | ||
| 270 | * zfcp_scsi_dev_lun - Return SCSI device LUN as 64 bit FCP LUN | ||
| 271 | * @sdev: SCSI device where to get the LUN from | ||
| 272 | */ | ||
| 273 | static inline u64 zfcp_scsi_dev_lun(struct scsi_device *sdev) | ||
| 274 | { | ||
| 275 | u64 fcp_lun; | ||
| 276 | |||
| 277 | int_to_scsilun(sdev->lun, (struct scsi_lun *)&fcp_lun); | ||
| 278 | return fcp_lun; | ||
| 279 | } | ||
| 280 | |||
| 281 | /** | ||
| 237 | * struct zfcp_fsf_req - basic FSF request structure | 282 | * struct zfcp_fsf_req - basic FSF request structure |
| 238 | * @list: list of FSF requests | 283 | * @list: list of FSF requests |
| 239 | * @req_id: unique request ID | 284 | * @req_id: unique request ID |
| @@ -249,7 +294,6 @@ struct zfcp_unit { | |||
| 249 | * @erp_action: reference to erp action if request issued on behalf of ERP | 294 | * @erp_action: reference to erp action if request issued on behalf of ERP |
| 250 | * @pool: reference to memory pool if used for this request | 295 | * @pool: reference to memory pool if used for this request |
| 251 | * @issued: time when request was send (STCK) | 296 | * @issued: time when request was send (STCK) |
| 252 | * @unit: reference to unit if this request is a SCSI request | ||
| 253 | * @handler: handler which should be called to process response | 297 | * @handler: handler which should be called to process response |
| 254 | */ | 298 | */ |
| 255 | struct zfcp_fsf_req { | 299 | struct zfcp_fsf_req { |
| @@ -267,7 +311,6 @@ struct zfcp_fsf_req { | |||
| 267 | struct zfcp_erp_action *erp_action; | 311 | struct zfcp_erp_action *erp_action; |
| 268 | mempool_t *pool; | 312 | mempool_t *pool; |
| 269 | unsigned long long issued; | 313 | unsigned long long issued; |
| 270 | struct zfcp_unit *unit; | ||
| 271 | void (*handler)(struct zfcp_fsf_req *); | 314 | void (*handler)(struct zfcp_fsf_req *); |
| 272 | }; | 315 | }; |
| 273 | 316 | ||
| @@ -282,9 +325,4 @@ struct zfcp_data { | |||
| 282 | struct kmem_cache *adisc_cache; | 325 | struct kmem_cache *adisc_cache; |
| 283 | }; | 326 | }; |
| 284 | 327 | ||
| 285 | /********************** ZFCP SPECIFIC DEFINES ********************************/ | ||
| 286 | |||
| 287 | #define ZFCP_SET 0x00000100 | ||
| 288 | #define ZFCP_CLEAR 0x00000200 | ||
| 289 | |||
| 290 | #endif /* ZFCP_DEF_H */ | 328 | #endif /* ZFCP_DEF_H */ |
