/********************* FSF SPECIFIC DEFINES *********************************/
/* ATTENTION: value must not be used by hardware */ #define FSF_QTCB_UNSOLICITED_STATUS 0x6305
/*************** ADAPTER/PORT/UNIT AND FSF_REQ STATUS FLAGS ******************/
/* * Note, the leftmost 12 status bits (3 nibbles) are common among adapter, port * and unit. This is a mask for bitwise 'and' with status values.
*/ #define ZFCP_COMMON_FLAGS 0xfff00000
/** * 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; 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
*/ staticinlinestruct 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
*/ staticinline u64 zfcp_scsi_dev_lun(struct scsi_device *sdev)
{
u64 fcp_lun;
/** * struct zfcp_fsf_req - basic FSF request structure * @list: list of FSF requests * @req_id: unique request ID * @adapter: adapter this request belongs to * @qdio_req: qdio queue related values * @completion: used to signal the completion of the request * @status: status of the request * @qtcb: associated QTCB * @data: private data * @timer: timer data of this request * @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) * @handler: handler which should be called to process response
*/ struct zfcp_fsf_req { struct list_head list;
u64 req_id; struct zfcp_adapter *adapter; struct zfcp_qdio_req qdio_req; struct completion completion;
u32 status; struct fsf_qtcb *qtcb; void *data; struct timer_list timer; struct zfcp_erp_action *erp_action;
mempool_t *pool; unsignedlonglong issued; void (*handler)(struct zfcp_fsf_req *);
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.