[SCSI] zfcp: Keep ccw device and model id in zfcp_ccw.c
Keep the information about the device and model id in zfcp_ccw. This requires an additional helper function to check for the privileged cfdc subchannel, but it allows the removal of the redundant defines from the zfcp_def header file. Reviewed-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
Родитель
ea460a8191
Коммит
6fcf41d1d8
|
@ -11,6 +11,24 @@
|
|||
|
||||
#include "zfcp_ext.h"
|
||||
|
||||
#define ZFCP_MODEL_PRIV 0x4
|
||||
|
||||
static struct ccw_device_id zfcp_ccw_device_id[] = {
|
||||
{ CCW_DEVICE_DEVTYPE(0x1731, 0x3, 0x1732, 0x3) },
|
||||
{ CCW_DEVICE_DEVTYPE(0x1731, 0x3, 0x1732, ZFCP_MODEL_PRIV) },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(ccw, zfcp_ccw_device_id);
|
||||
|
||||
/**
|
||||
* zfcp_ccw_priv_sch - check if subchannel is privileged
|
||||
* @adapter: Adapter/Subchannel to check
|
||||
*/
|
||||
int zfcp_ccw_priv_sch(struct zfcp_adapter *adapter)
|
||||
{
|
||||
return adapter->ccw_device->id.dev_model == ZFCP_MODEL_PRIV;
|
||||
}
|
||||
|
||||
/**
|
||||
* zfcp_ccw_probe - probe function of zfcp driver
|
||||
* @ccw_device: pointer to belonging ccw device
|
||||
|
@ -199,14 +217,6 @@ static void zfcp_ccw_shutdown(struct ccw_device *cdev)
|
|||
up(&zfcp_data.config_sema);
|
||||
}
|
||||
|
||||
static struct ccw_device_id zfcp_ccw_device_id[] = {
|
||||
{ CCW_DEVICE_DEVTYPE(0x1731, 0x3, 0x1732, 0x3) },
|
||||
{ CCW_DEVICE_DEVTYPE(0x1731, 0x3, 0x1732, 0x4) }, /* priv. */
|
||||
{},
|
||||
};
|
||||
|
||||
MODULE_DEVICE_TABLE(ccw, zfcp_ccw_device_id);
|
||||
|
||||
static struct ccw_driver zfcp_ccw_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "zfcp",
|
||||
|
|
|
@ -47,13 +47,6 @@
|
|||
|
||||
/********************* CIO/QDIO SPECIFIC DEFINES *****************************/
|
||||
|
||||
/* Adapter Identification Parameters */
|
||||
#define ZFCP_CONTROL_UNIT_TYPE 0x1731
|
||||
#define ZFCP_CONTROL_UNIT_MODEL 0x03
|
||||
#define ZFCP_DEVICE_TYPE 0x1732
|
||||
#define ZFCP_DEVICE_MODEL 0x03
|
||||
#define ZFCP_DEVICE_MODEL_PRIV 0x04
|
||||
|
||||
/* DMQ bug workaround: don't use last SBALE */
|
||||
#define ZFCP_MAX_SBALES_PER_SBAL (QDIO_MAX_ELEMENTS_PER_BUFFER - 1)
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ extern int zfcp_sg_setup_table(struct scatterlist *, int);
|
|||
|
||||
/* zfcp_ccw.c */
|
||||
extern int zfcp_ccw_register(void);
|
||||
extern int zfcp_ccw_priv_sch(struct zfcp_adapter *);
|
||||
extern struct zfcp_adapter *zfcp_get_adapter_by_busid(char *);
|
||||
|
||||
/* zfcp_cfdc.c */
|
||||
|
|
|
@ -1887,7 +1887,7 @@ static void zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *req)
|
|||
|
||||
if (!(adapter->connection_features & FSF_FEATURE_NPIV_MODE) &&
|
||||
(adapter->adapter_features & FSF_FEATURE_LUN_SHARING) &&
|
||||
(adapter->ccw_device->id.dev_model != ZFCP_DEVICE_MODEL_PRIV)) {
|
||||
!zfcp_ccw_priv_sch(adapter)) {
|
||||
exclusive = (bottom->lun_access_info &
|
||||
FSF_UNIT_ACCESS_EXCLUSIVE);
|
||||
readwrite = (bottom->lun_access_info &
|
||||
|
|
Загрузка…
Ссылка в новой задаче