From eda9d4886207e6337c46c5089d1006798a218e58 Mon Sep 17 00:00:00 2001 From: Christof Schmitt Date: Wed, 8 Sep 2010 14:39:51 +0200 Subject: [PATCH] --- yaml --- r: 213343 b: refs/heads/master c: 57c237731b92fadc7d44824276313ec330b1989b h: refs/heads/master i: 213341: 150695256ae48562703cb883c180f0d627a7bafc 213339: 2b1c1045b3c3915da6d83fa044aba8589418cf7b 213335: a09a4a0387613a26c221fc06e9d4116d491f41fd 213327: ece33129bee25c3ecb5421f3dda2e575cacafa25 213311: 4ba1cc7ff90437e7267a9cba1cf48f86540df4b5 v: v3 --- [refs] | 2 +- trunk/drivers/s390/scsi/zfcp_aux.c | 3 +++ trunk/drivers/s390/scsi/zfcp_def.h | 39 ++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index c857bb5442d7..104b84c7ef6c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d99e5f488ae28d9dfccc84435f4fd29bd1fe1b9b +refs/heads/master: 57c237731b92fadc7d44824276313ec330b1989b diff --git a/trunk/drivers/s390/scsi/zfcp_aux.c b/trunk/drivers/s390/scsi/zfcp_aux.c index 68df57157d48..5c4b874591ea 100644 --- a/trunk/drivers/s390/scsi/zfcp_aux.c +++ b/trunk/drivers/s390/scsi/zfcp_aux.c @@ -159,6 +159,9 @@ static int __init zfcp_module_init(void) fc_attach_transport(&zfcp_transport_functions); if (!zfcp_data.scsi_transport_template) goto out_transport; + scsi_transport_reserve_device(zfcp_data.scsi_transport_template, + sizeof(struct zfcp_scsi_dev)); + retval = misc_register(&zfcp_cfdc_misc); if (retval) { diff --git a/trunk/drivers/s390/scsi/zfcp_def.h b/trunk/drivers/s390/scsi/zfcp_def.h index e1c6b6e05a75..d31158c0de93 100644 --- a/trunk/drivers/s390/scsi/zfcp_def.h +++ b/trunk/drivers/s390/scsi/zfcp_def.h @@ -233,6 +233,45 @@ struct zfcp_unit { 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