mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
scsi: provide a generic change_queue_type method
Most drivers use exactly the same implementation, so provide it as a library function. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Reviewed-by: Hannes Reinecke <hare@suse.de>
This commit is contained in:
parent
1d5203284d
commit
a62182f338
@ -2258,28 +2258,6 @@ static int srp_cm_handler(struct ib_cm_id *cm_id, struct ib_cm_event *event)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* srp_change_queue_type - changing device queue tag type
|
|
||||||
* @sdev: scsi device struct
|
|
||||||
* @tag_type: requested tag type
|
|
||||||
*
|
|
||||||
* Returns queue tag type.
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
srp_change_queue_type(struct scsi_device *sdev, int tag_type)
|
|
||||||
{
|
|
||||||
if (sdev->tagged_supported) {
|
|
||||||
scsi_set_tag_type(sdev, tag_type);
|
|
||||||
if (tag_type)
|
|
||||||
scsi_activate_tcq(sdev, sdev->queue_depth);
|
|
||||||
else
|
|
||||||
scsi_deactivate_tcq(sdev, sdev->queue_depth);
|
|
||||||
} else
|
|
||||||
tag_type = 0;
|
|
||||||
|
|
||||||
return tag_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* srp_change_queue_depth - setting device queue depth
|
* srp_change_queue_depth - setting device queue depth
|
||||||
* @sdev: scsi device struct
|
* @sdev: scsi device struct
|
||||||
@ -2600,7 +2578,7 @@ static struct scsi_host_template srp_template = {
|
|||||||
.info = srp_target_info,
|
.info = srp_target_info,
|
||||||
.queuecommand = srp_queuecommand,
|
.queuecommand = srp_queuecommand,
|
||||||
.change_queue_depth = srp_change_queue_depth,
|
.change_queue_depth = srp_change_queue_depth,
|
||||||
.change_queue_type = srp_change_queue_type,
|
.change_queue_type = scsi_change_queue_type,
|
||||||
.eh_abort_handler = srp_abort,
|
.eh_abort_handler = srp_abort,
|
||||||
.eh_device_reset_handler = srp_reset_device,
|
.eh_device_reset_handler = srp_reset_device,
|
||||||
.eh_host_reset_handler = srp_reset_host,
|
.eh_host_reset_handler = srp_reset_host,
|
||||||
|
@ -2784,7 +2784,7 @@ static struct scsi_host_template bnx2fc_shost_template = {
|
|||||||
.eh_host_reset_handler = fc_eh_host_reset,
|
.eh_host_reset_handler = fc_eh_host_reset,
|
||||||
.slave_alloc = fc_slave_alloc,
|
.slave_alloc = fc_slave_alloc,
|
||||||
.change_queue_depth = fc_change_queue_depth,
|
.change_queue_depth = fc_change_queue_depth,
|
||||||
.change_queue_type = fc_change_queue_type,
|
.change_queue_type = scsi_change_queue_type,
|
||||||
.this_id = -1,
|
.this_id = -1,
|
||||||
.cmd_per_lun = 3,
|
.cmd_per_lun = 3,
|
||||||
.use_clustering = ENABLE_CLUSTERING,
|
.use_clustering = ENABLE_CLUSTERING,
|
||||||
|
@ -976,7 +976,6 @@ int esas2r_slave_alloc(struct scsi_device *dev);
|
|||||||
int esas2r_slave_configure(struct scsi_device *dev);
|
int esas2r_slave_configure(struct scsi_device *dev);
|
||||||
void esas2r_slave_destroy(struct scsi_device *dev);
|
void esas2r_slave_destroy(struct scsi_device *dev);
|
||||||
int esas2r_change_queue_depth(struct scsi_device *dev, int depth, int reason);
|
int esas2r_change_queue_depth(struct scsi_device *dev, int depth, int reason);
|
||||||
int esas2r_change_queue_type(struct scsi_device *dev, int type);
|
|
||||||
long esas2r_proc_ioctl(struct file *fp, unsigned int cmd, unsigned long arg);
|
long esas2r_proc_ioctl(struct file *fp, unsigned int cmd, unsigned long arg);
|
||||||
|
|
||||||
/* SCSI error handler (eh) functions */
|
/* SCSI error handler (eh) functions */
|
||||||
|
@ -258,7 +258,7 @@ static struct scsi_host_template driver_template = {
|
|||||||
.slave_alloc = esas2r_slave_alloc,
|
.slave_alloc = esas2r_slave_alloc,
|
||||||
.slave_destroy = esas2r_slave_destroy,
|
.slave_destroy = esas2r_slave_destroy,
|
||||||
.change_queue_depth = esas2r_change_queue_depth,
|
.change_queue_depth = esas2r_change_queue_depth,
|
||||||
.change_queue_type = esas2r_change_queue_type,
|
.change_queue_type = scsi_change_queue_type,
|
||||||
.max_sectors = 0xFFFF,
|
.max_sectors = 0xFFFF,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1268,24 +1268,6 @@ int esas2r_change_queue_depth(struct scsi_device *dev, int depth, int reason)
|
|||||||
return dev->queue_depth;
|
return dev->queue_depth;
|
||||||
}
|
}
|
||||||
|
|
||||||
int esas2r_change_queue_type(struct scsi_device *dev, int type)
|
|
||||||
{
|
|
||||||
esas2r_log(ESAS2R_LOG_INFO, "change_queue_type %p, %d", dev, type);
|
|
||||||
|
|
||||||
if (dev->tagged_supported) {
|
|
||||||
scsi_set_tag_type(dev, type);
|
|
||||||
|
|
||||||
if (type)
|
|
||||||
scsi_activate_tcq(dev, dev->queue_depth);
|
|
||||||
else
|
|
||||||
scsi_deactivate_tcq(dev, dev->queue_depth);
|
|
||||||
} else {
|
|
||||||
type = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
int esas2r_slave_alloc(struct scsi_device *dev)
|
int esas2r_slave_alloc(struct scsi_device *dev)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -281,7 +281,7 @@ static struct scsi_host_template fcoe_shost_template = {
|
|||||||
.eh_host_reset_handler = fc_eh_host_reset,
|
.eh_host_reset_handler = fc_eh_host_reset,
|
||||||
.slave_alloc = fc_slave_alloc,
|
.slave_alloc = fc_slave_alloc,
|
||||||
.change_queue_depth = fc_change_queue_depth,
|
.change_queue_depth = fc_change_queue_depth,
|
||||||
.change_queue_type = fc_change_queue_type,
|
.change_queue_type = scsi_change_queue_type,
|
||||||
.this_id = -1,
|
.this_id = -1,
|
||||||
.cmd_per_lun = 3,
|
.cmd_per_lun = 3,
|
||||||
.can_queue = FCOE_MAX_OUTSTANDING_COMMANDS,
|
.can_queue = FCOE_MAX_OUTSTANDING_COMMANDS,
|
||||||
|
@ -113,7 +113,7 @@ static struct scsi_host_template fnic_host_template = {
|
|||||||
.eh_host_reset_handler = fnic_host_reset,
|
.eh_host_reset_handler = fnic_host_reset,
|
||||||
.slave_alloc = fnic_slave_alloc,
|
.slave_alloc = fnic_slave_alloc,
|
||||||
.change_queue_depth = fc_change_queue_depth,
|
.change_queue_depth = fc_change_queue_depth,
|
||||||
.change_queue_type = fc_change_queue_type,
|
.change_queue_type = scsi_change_queue_type,
|
||||||
.this_id = -1,
|
.this_id = -1,
|
||||||
.cmd_per_lun = 3,
|
.cmd_per_lun = 3,
|
||||||
.can_queue = FNIC_DFLT_IO_REQ,
|
.can_queue = FNIC_DFLT_IO_REQ,
|
||||||
|
@ -2929,29 +2929,6 @@ static int ibmvfc_change_queue_depth(struct scsi_device *sdev, int qdepth,
|
|||||||
return sdev->queue_depth;
|
return sdev->queue_depth;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* ibmvfc_change_queue_type - Change the device's queue type
|
|
||||||
* @sdev: scsi device struct
|
|
||||||
* @tag_type: type of tags to use
|
|
||||||
*
|
|
||||||
* Return value:
|
|
||||||
* actual queue type set
|
|
||||||
**/
|
|
||||||
static int ibmvfc_change_queue_type(struct scsi_device *sdev, int tag_type)
|
|
||||||
{
|
|
||||||
if (sdev->tagged_supported) {
|
|
||||||
scsi_set_tag_type(sdev, tag_type);
|
|
||||||
|
|
||||||
if (tag_type)
|
|
||||||
scsi_activate_tcq(sdev, sdev->queue_depth);
|
|
||||||
else
|
|
||||||
scsi_deactivate_tcq(sdev, sdev->queue_depth);
|
|
||||||
} else
|
|
||||||
tag_type = 0;
|
|
||||||
|
|
||||||
return tag_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
static ssize_t ibmvfc_show_host_partition_name(struct device *dev,
|
static ssize_t ibmvfc_show_host_partition_name(struct device *dev,
|
||||||
struct device_attribute *attr, char *buf)
|
struct device_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
@ -3133,7 +3110,7 @@ static struct scsi_host_template driver_template = {
|
|||||||
.target_alloc = ibmvfc_target_alloc,
|
.target_alloc = ibmvfc_target_alloc,
|
||||||
.scan_finished = ibmvfc_scan_finished,
|
.scan_finished = ibmvfc_scan_finished,
|
||||||
.change_queue_depth = ibmvfc_change_queue_depth,
|
.change_queue_depth = ibmvfc_change_queue_depth,
|
||||||
.change_queue_type = ibmvfc_change_queue_type,
|
.change_queue_type = scsi_change_queue_type,
|
||||||
.cmd_per_lun = 16,
|
.cmd_per_lun = 16,
|
||||||
.can_queue = IBMVFC_MAX_REQUESTS_DEFAULT,
|
.can_queue = IBMVFC_MAX_REQUESTS_DEFAULT,
|
||||||
.this_id = -1,
|
.this_id = -1,
|
||||||
|
@ -4364,24 +4364,10 @@ static int ipr_change_queue_type(struct scsi_device *sdev, int tag_type)
|
|||||||
|
|
||||||
spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags);
|
spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags);
|
||||||
res = (struct ipr_resource_entry *)sdev->hostdata;
|
res = (struct ipr_resource_entry *)sdev->hostdata;
|
||||||
|
if (res && ipr_is_gscsi(res))
|
||||||
if (res) {
|
tag_type = scsi_change_queue_type(sdev, tag_type);
|
||||||
if (ipr_is_gscsi(res) && sdev->tagged_supported) {
|
else
|
||||||
/*
|
|
||||||
* We don't bother quiescing the device here since the
|
|
||||||
* adapter firmware does it for us.
|
|
||||||
*/
|
|
||||||
scsi_set_tag_type(sdev, tag_type);
|
|
||||||
|
|
||||||
if (tag_type)
|
|
||||||
scsi_activate_tcq(sdev, sdev->queue_depth);
|
|
||||||
else
|
|
||||||
scsi_deactivate_tcq(sdev, sdev->queue_depth);
|
|
||||||
} else
|
|
||||||
tag_type = 0;
|
|
||||||
} else
|
|
||||||
tag_type = 0;
|
tag_type = 0;
|
||||||
|
|
||||||
spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
|
spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
|
||||||
return tag_type;
|
return tag_type;
|
||||||
}
|
}
|
||||||
|
@ -2195,26 +2195,6 @@ int fc_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(fc_change_queue_depth);
|
EXPORT_SYMBOL(fc_change_queue_depth);
|
||||||
|
|
||||||
/**
|
|
||||||
* fc_change_queue_type() - Change a device's queue type
|
|
||||||
* @sdev: The SCSI device whose queue depth is to change
|
|
||||||
* @tag_type: Identifier for queue type
|
|
||||||
*/
|
|
||||||
int fc_change_queue_type(struct scsi_device *sdev, int tag_type)
|
|
||||||
{
|
|
||||||
if (sdev->tagged_supported) {
|
|
||||||
scsi_set_tag_type(sdev, tag_type);
|
|
||||||
if (tag_type)
|
|
||||||
scsi_activate_tcq(sdev, sdev->queue_depth);
|
|
||||||
else
|
|
||||||
scsi_deactivate_tcq(sdev, sdev->queue_depth);
|
|
||||||
} else
|
|
||||||
tag_type = 0;
|
|
||||||
|
|
||||||
return tag_type;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(fc_change_queue_type);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fc_fcp_destory() - Tear down the FCP layer for a given local port
|
* fc_fcp_destory() - Tear down the FCP layer for a given local port
|
||||||
* @lport: The local port that no longer needs the FCP layer
|
* @lport: The local port that no longer needs the FCP layer
|
||||||
|
@ -344,26 +344,6 @@ lpfc_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
|||||||
return sdev->queue_depth;
|
return sdev->queue_depth;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* lpfc_change_queue_type() - Change a device's scsi tag queuing type
|
|
||||||
* @sdev: Pointer the scsi device whose queue depth is to change
|
|
||||||
* @tag_type: Identifier for queue tag type
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
lpfc_change_queue_type(struct scsi_device *sdev, int tag_type)
|
|
||||||
{
|
|
||||||
if (sdev->tagged_supported) {
|
|
||||||
scsi_set_tag_type(sdev, tag_type);
|
|
||||||
if (tag_type)
|
|
||||||
scsi_activate_tcq(sdev, sdev->queue_depth);
|
|
||||||
else
|
|
||||||
scsi_deactivate_tcq(sdev, sdev->queue_depth);
|
|
||||||
} else
|
|
||||||
tag_type = 0;
|
|
||||||
|
|
||||||
return tag_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lpfc_rampdown_queue_depth - Post RAMP_DOWN_QUEUE event to worker thread
|
* lpfc_rampdown_queue_depth - Post RAMP_DOWN_QUEUE event to worker thread
|
||||||
* @phba: The Hba for which this call is being executed.
|
* @phba: The Hba for which this call is being executed.
|
||||||
@ -6019,7 +5999,7 @@ struct scsi_host_template lpfc_template = {
|
|||||||
.max_sectors = 0xFFFF,
|
.max_sectors = 0xFFFF,
|
||||||
.vendor_id = LPFC_NL_VENDOR_ID,
|
.vendor_id = LPFC_NL_VENDOR_ID,
|
||||||
.change_queue_depth = lpfc_change_queue_depth,
|
.change_queue_depth = lpfc_change_queue_depth,
|
||||||
.change_queue_type = lpfc_change_queue_type,
|
.change_queue_type = scsi_change_queue_type,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct scsi_host_template lpfc_vport_template = {
|
struct scsi_host_template lpfc_vport_template = {
|
||||||
@ -6042,5 +6022,5 @@ struct scsi_host_template lpfc_vport_template = {
|
|||||||
.shost_attrs = lpfc_vport_attrs,
|
.shost_attrs = lpfc_vport_attrs,
|
||||||
.max_sectors = 0xFFFF,
|
.max_sectors = 0xFFFF,
|
||||||
.change_queue_depth = lpfc_change_queue_depth,
|
.change_queue_depth = lpfc_change_queue_depth,
|
||||||
.change_queue_type = lpfc_change_queue_type,
|
.change_queue_type = scsi_change_queue_type,
|
||||||
};
|
};
|
||||||
|
@ -1254,28 +1254,6 @@ _scsih_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
|||||||
return sdev->queue_depth;
|
return sdev->queue_depth;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* _scsih_change_queue_type - changing device queue tag type
|
|
||||||
* @sdev: scsi device struct
|
|
||||||
* @tag_type: requested tag type
|
|
||||||
*
|
|
||||||
* Returns queue tag type.
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
_scsih_change_queue_type(struct scsi_device *sdev, int tag_type)
|
|
||||||
{
|
|
||||||
if (sdev->tagged_supported) {
|
|
||||||
scsi_set_tag_type(sdev, tag_type);
|
|
||||||
if (tag_type)
|
|
||||||
scsi_activate_tcq(sdev, sdev->queue_depth);
|
|
||||||
else
|
|
||||||
scsi_deactivate_tcq(sdev, sdev->queue_depth);
|
|
||||||
} else
|
|
||||||
tag_type = 0;
|
|
||||||
|
|
||||||
return tag_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* _scsih_target_alloc - target add routine
|
* _scsih_target_alloc - target add routine
|
||||||
* @starget: scsi target struct
|
* @starget: scsi target struct
|
||||||
@ -7653,7 +7631,7 @@ static struct scsi_host_template scsih_driver_template = {
|
|||||||
.scan_finished = _scsih_scan_finished,
|
.scan_finished = _scsih_scan_finished,
|
||||||
.scan_start = _scsih_scan_start,
|
.scan_start = _scsih_scan_start,
|
||||||
.change_queue_depth = _scsih_change_queue_depth,
|
.change_queue_depth = _scsih_change_queue_depth,
|
||||||
.change_queue_type = _scsih_change_queue_type,
|
.change_queue_type = scsi_change_queue_type,
|
||||||
.eh_abort_handler = _scsih_abort,
|
.eh_abort_handler = _scsih_abort,
|
||||||
.eh_device_reset_handler = _scsih_dev_reset,
|
.eh_device_reset_handler = _scsih_dev_reset,
|
||||||
.eh_target_reset_handler = _scsih_target_reset,
|
.eh_target_reset_handler = _scsih_target_reset,
|
||||||
|
@ -1122,29 +1122,6 @@ _scsih_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
|||||||
return sdev->queue_depth;
|
return sdev->queue_depth;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* _scsih_change_queue_type - changing device queue tag type
|
|
||||||
* @sdev: scsi device struct
|
|
||||||
* @tag_type: requested tag type
|
|
||||||
*
|
|
||||||
* Returns queue tag type.
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
_scsih_change_queue_type(struct scsi_device *sdev, int tag_type)
|
|
||||||
{
|
|
||||||
if (sdev->tagged_supported) {
|
|
||||||
scsi_set_tag_type(sdev, tag_type);
|
|
||||||
if (tag_type)
|
|
||||||
scsi_activate_tcq(sdev, sdev->queue_depth);
|
|
||||||
else
|
|
||||||
scsi_deactivate_tcq(sdev, sdev->queue_depth);
|
|
||||||
} else
|
|
||||||
tag_type = 0;
|
|
||||||
|
|
||||||
return tag_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* _scsih_target_alloc - target add routine
|
* _scsih_target_alloc - target add routine
|
||||||
* @starget: scsi target struct
|
* @starget: scsi target struct
|
||||||
@ -7284,7 +7261,7 @@ static struct scsi_host_template scsih_driver_template = {
|
|||||||
.scan_finished = _scsih_scan_finished,
|
.scan_finished = _scsih_scan_finished,
|
||||||
.scan_start = _scsih_scan_start,
|
.scan_start = _scsih_scan_start,
|
||||||
.change_queue_depth = _scsih_change_queue_depth,
|
.change_queue_depth = _scsih_change_queue_depth,
|
||||||
.change_queue_type = _scsih_change_queue_type,
|
.change_queue_type = scsi_change_queue_type,
|
||||||
.eh_abort_handler = _scsih_abort,
|
.eh_abort_handler = _scsih_abort,
|
||||||
.eh_device_reset_handler = _scsih_dev_reset,
|
.eh_device_reset_handler = _scsih_dev_reset,
|
||||||
.eh_target_reset_handler = _scsih_target_reset,
|
.eh_target_reset_handler = _scsih_target_reset,
|
||||||
|
@ -321,16 +321,10 @@ static int pmcraid_change_queue_type(struct scsi_device *scsi_dev, int tag)
|
|||||||
struct pmcraid_resource_entry *res;
|
struct pmcraid_resource_entry *res;
|
||||||
|
|
||||||
res = (struct pmcraid_resource_entry *)scsi_dev->hostdata;
|
res = (struct pmcraid_resource_entry *)scsi_dev->hostdata;
|
||||||
|
if (res && scsi_dev->tagged_supported &&
|
||||||
if ((res) && scsi_dev->tagged_supported &&
|
(RES_IS_GSCSI(res->cfg_entry) || RES_IS_VSET(res->cfg_entry)))
|
||||||
(RES_IS_GSCSI(res->cfg_entry) || RES_IS_VSET(res->cfg_entry))) {
|
tag = scsi_change_queue_type(scsi_dev, tag);
|
||||||
scsi_set_tag_type(scsi_dev, tag);
|
else
|
||||||
|
|
||||||
if (tag)
|
|
||||||
scsi_activate_tcq(scsi_dev, scsi_dev->queue_depth);
|
|
||||||
else
|
|
||||||
scsi_deactivate_tcq(scsi_dev, scsi_dev->queue_depth);
|
|
||||||
} else
|
|
||||||
tag = 0;
|
tag = 0;
|
||||||
|
|
||||||
return tag;
|
return tag;
|
||||||
|
@ -237,7 +237,6 @@ static int qla2xxx_eh_bus_reset(struct scsi_cmnd *);
|
|||||||
static int qla2xxx_eh_host_reset(struct scsi_cmnd *);
|
static int qla2xxx_eh_host_reset(struct scsi_cmnd *);
|
||||||
|
|
||||||
static int qla2x00_change_queue_depth(struct scsi_device *, int, int);
|
static int qla2x00_change_queue_depth(struct scsi_device *, int, int);
|
||||||
static int qla2x00_change_queue_type(struct scsi_device *, int);
|
|
||||||
static void qla2x00_clear_drv_active(struct qla_hw_data *);
|
static void qla2x00_clear_drv_active(struct qla_hw_data *);
|
||||||
static void qla2x00_free_device(scsi_qla_host_t *);
|
static void qla2x00_free_device(scsi_qla_host_t *);
|
||||||
static void qla83xx_disable_laser(scsi_qla_host_t *vha);
|
static void qla83xx_disable_laser(scsi_qla_host_t *vha);
|
||||||
@ -260,7 +259,7 @@ struct scsi_host_template qla2xxx_driver_template = {
|
|||||||
.scan_finished = qla2xxx_scan_finished,
|
.scan_finished = qla2xxx_scan_finished,
|
||||||
.scan_start = qla2xxx_scan_start,
|
.scan_start = qla2xxx_scan_start,
|
||||||
.change_queue_depth = qla2x00_change_queue_depth,
|
.change_queue_depth = qla2x00_change_queue_depth,
|
||||||
.change_queue_type = qla2x00_change_queue_type,
|
.change_queue_type = scsi_change_queue_type,
|
||||||
.this_id = -1,
|
.this_id = -1,
|
||||||
.cmd_per_lun = 3,
|
.cmd_per_lun = 3,
|
||||||
.use_clustering = ENABLE_CLUSTERING,
|
.use_clustering = ENABLE_CLUSTERING,
|
||||||
@ -1473,21 +1472,6 @@ qla2x00_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
|||||||
return sdev->queue_depth;
|
return sdev->queue_depth;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
qla2x00_change_queue_type(struct scsi_device *sdev, int tag_type)
|
|
||||||
{
|
|
||||||
if (sdev->tagged_supported) {
|
|
||||||
scsi_set_tag_type(sdev, tag_type);
|
|
||||||
if (tag_type)
|
|
||||||
scsi_activate_tcq(sdev, sdev->queue_depth);
|
|
||||||
else
|
|
||||||
scsi_deactivate_tcq(sdev, sdev->queue_depth);
|
|
||||||
} else
|
|
||||||
tag_type = 0;
|
|
||||||
|
|
||||||
return tag_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* qla2x00_config_dma_addressing() - Configure OS DMA addressing method.
|
* qla2x00_config_dma_addressing() - Configure OS DMA addressing method.
|
||||||
* @ha: HA context
|
* @ha: HA context
|
||||||
|
@ -866,6 +866,26 @@ int scsi_track_queue_full(struct scsi_device *sdev, int depth)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(scsi_track_queue_full);
|
EXPORT_SYMBOL(scsi_track_queue_full);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* scsi_change_queue_type() - Change a device's queue type
|
||||||
|
* @sdev: The SCSI device whose queue depth is to change
|
||||||
|
* @tag_type: Identifier for queue type
|
||||||
|
*/
|
||||||
|
int scsi_change_queue_type(struct scsi_device *sdev, int tag_type)
|
||||||
|
{
|
||||||
|
if (sdev->tagged_supported) {
|
||||||
|
scsi_set_tag_type(sdev, tag_type);
|
||||||
|
if (tag_type)
|
||||||
|
scsi_activate_tcq(sdev, sdev->queue_depth);
|
||||||
|
else
|
||||||
|
scsi_deactivate_tcq(sdev, sdev->queue_depth);
|
||||||
|
} else
|
||||||
|
tag_type = 0;
|
||||||
|
|
||||||
|
return tag_type;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(scsi_change_queue_type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* scsi_vpd_inquiry - Request a device provide us with a VPD page
|
* scsi_vpd_inquiry - Request a device provide us with a VPD page
|
||||||
* @sdev: The device to ask
|
* @sdev: The device to ask
|
||||||
|
@ -4532,14 +4532,7 @@ sdebug_change_qdepth(struct scsi_device *sdev, int qdepth, int reason)
|
|||||||
static int
|
static int
|
||||||
sdebug_change_qtype(struct scsi_device *sdev, int qtype)
|
sdebug_change_qtype(struct scsi_device *sdev, int qtype)
|
||||||
{
|
{
|
||||||
if (sdev->tagged_supported) {
|
qtype = scsi_change_queue_type(sdev, qtype);
|
||||||
scsi_set_tag_type(sdev, qtype);
|
|
||||||
if (qtype)
|
|
||||||
scsi_activate_tcq(sdev, sdev->queue_depth);
|
|
||||||
else
|
|
||||||
scsi_deactivate_tcq(sdev, sdev->queue_depth);
|
|
||||||
} else
|
|
||||||
qtype = 0;
|
|
||||||
if (SCSI_DEBUG_OPT_Q_NOISE & scsi_debug_opts) {
|
if (SCSI_DEBUG_OPT_Q_NOISE & scsi_debug_opts) {
|
||||||
const char *cp;
|
const char *cp;
|
||||||
|
|
||||||
|
@ -135,21 +135,6 @@ static int tcm_loop_change_queue_depth(
|
|||||||
return sdev->queue_depth;
|
return sdev->queue_depth;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tcm_loop_change_queue_type(struct scsi_device *sdev, int tag)
|
|
||||||
{
|
|
||||||
if (sdev->tagged_supported) {
|
|
||||||
scsi_set_tag_type(sdev, tag);
|
|
||||||
|
|
||||||
if (tag)
|
|
||||||
scsi_activate_tcq(sdev, sdev->queue_depth);
|
|
||||||
else
|
|
||||||
scsi_deactivate_tcq(sdev, sdev->queue_depth);
|
|
||||||
} else
|
|
||||||
tag = 0;
|
|
||||||
|
|
||||||
return tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Locate the SAM Task Attr from struct scsi_cmnd *
|
* Locate the SAM Task Attr from struct scsi_cmnd *
|
||||||
*/
|
*/
|
||||||
@ -451,7 +436,7 @@ static struct scsi_host_template tcm_loop_driver_template = {
|
|||||||
.name = "TCM_Loopback",
|
.name = "TCM_Loopback",
|
||||||
.queuecommand = tcm_loop_queuecommand,
|
.queuecommand = tcm_loop_queuecommand,
|
||||||
.change_queue_depth = tcm_loop_change_queue_depth,
|
.change_queue_depth = tcm_loop_change_queue_depth,
|
||||||
.change_queue_type = tcm_loop_change_queue_type,
|
.change_queue_type = scsi_change_queue_type,
|
||||||
.eh_abort_handler = tcm_loop_abort_task,
|
.eh_abort_handler = tcm_loop_abort_task,
|
||||||
.eh_device_reset_handler = tcm_loop_device_reset,
|
.eh_device_reset_handler = tcm_loop_device_reset,
|
||||||
.eh_target_reset_handler = tcm_loop_target_reset,
|
.eh_target_reset_handler = tcm_loop_target_reset,
|
||||||
|
@ -1106,7 +1106,6 @@ int fc_eh_device_reset(struct scsi_cmnd *);
|
|||||||
int fc_eh_host_reset(struct scsi_cmnd *);
|
int fc_eh_host_reset(struct scsi_cmnd *);
|
||||||
int fc_slave_alloc(struct scsi_device *);
|
int fc_slave_alloc(struct scsi_device *);
|
||||||
int fc_change_queue_depth(struct scsi_device *, int qdepth, int reason);
|
int fc_change_queue_depth(struct scsi_device *, int qdepth, int reason);
|
||||||
int fc_change_queue_type(struct scsi_device *, int tag_type);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ELS/CT interface
|
* ELS/CT interface
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
#ifdef CONFIG_BLOCK
|
#ifdef CONFIG_BLOCK
|
||||||
|
|
||||||
|
int scsi_change_queue_type(struct scsi_device *sdev, int tag_type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* scsi_get_tag_type - get the type of tag the device supports
|
* scsi_get_tag_type - get the type of tag the device supports
|
||||||
* @sdev: the scsi device
|
* @sdev: the scsi device
|
||||||
|
Loading…
x
Reference in New Issue
Block a user