mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
scsi: drop reason argument from ->change_queue_depth
Drop the now unused reason argument from the ->change_queue_depth method. Also add a return value to scsi_adjust_queue_depth, and rename it to scsi_change_queue_depth now that it can be used as the default ->change_queue_depth implementation. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Reviewed-by: Hannes Reinecke <hare@suse.de>
This commit is contained in:
parent
1e6f241604
commit
db5ed4dfd5
@ -149,7 +149,7 @@ scsi_add_host() ---->
|
||||
scsi_scan_host() -------+
|
||||
|
|
||||
slave_alloc()
|
||||
slave_configure() --> scsi_adjust_queue_depth()
|
||||
slave_configure() --> scsi_change_queue_depth()
|
||||
|
|
||||
slave_alloc()
|
||||
slave_configure()
|
||||
@ -159,7 +159,7 @@ scsi_scan_host() -------+
|
||||
------------------------------------------------------------
|
||||
|
||||
If the LLD wants to adjust the default queue settings, it can invoke
|
||||
scsi_adjust_queue_depth() in its slave_configure() routine.
|
||||
scsi_change_queue_depth() in its slave_configure() routine.
|
||||
|
||||
*** For scsi devices that the mid level tries to scan but do not
|
||||
respond, a slave_alloc(), slave_destroy() pair is called.
|
||||
@ -203,7 +203,7 @@ LLD mid level LLD
|
||||
scsi_add_device() ------+
|
||||
|
|
||||
slave_alloc()
|
||||
slave_configure() [--> scsi_adjust_queue_depth()]
|
||||
slave_configure() [--> scsi_change_queue_depth()]
|
||||
------------------------------------------------------------
|
||||
|
||||
In a similar fashion, an LLD may become aware that a SCSI device has been
|
||||
@ -261,7 +261,7 @@ init_this_scsi_driver() ----+
|
||||
| scsi_register()
|
||||
|
|
||||
slave_alloc()
|
||||
slave_configure() --> scsi_adjust_queue_depth()
|
||||
slave_configure() --> scsi_change_queue_depth()
|
||||
slave_alloc() ***
|
||||
slave_destroy() ***
|
||||
|
|
||||
@ -271,7 +271,7 @@ init_this_scsi_driver() ----+
|
||||
slave_destroy() ***
|
||||
------------------------------------------------------------
|
||||
|
||||
The mid level invokes scsi_adjust_queue_depth() with "cmd_per_lun" for that
|
||||
The mid level invokes scsi_change_queue_depth() with "cmd_per_lun" for that
|
||||
host as the queue length. These settings can be overridden by a
|
||||
slave_configure() supplied by the LLD.
|
||||
|
||||
@ -368,7 +368,7 @@ names all start with "scsi_".
|
||||
Summary:
|
||||
scsi_add_device - creates new scsi device (lu) instance
|
||||
scsi_add_host - perform sysfs registration and set up transport class
|
||||
scsi_adjust_queue_depth - change the queue depth on a SCSI device
|
||||
scsi_change_queue_depth - change the queue depth on a SCSI device
|
||||
scsi_bios_ptable - return copy of block device's partition table
|
||||
scsi_block_requests - prevent further commands being queued to given host
|
||||
scsi_host_alloc - return a new scsi_host instance whose refcount==1
|
||||
@ -436,7 +436,7 @@ int scsi_add_host(struct Scsi_Host *shost, struct device * dev)
|
||||
|
||||
|
||||
/**
|
||||
* scsi_adjust_queue_depth - allow LLD to change queue depth on a SCSI device
|
||||
* scsi_change_queue_depth - allow LLD to change queue depth on a SCSI device
|
||||
* @sdev: pointer to SCSI device to change queue depth on
|
||||
* @tags Number of tags allowed if tagged queuing enabled,
|
||||
* or number of commands the LLD can queue up
|
||||
@ -453,7 +453,7 @@ int scsi_add_host(struct Scsi_Host *shost, struct device * dev)
|
||||
* Defined in: drivers/scsi/scsi.c [see source code for more notes]
|
||||
*
|
||||
**/
|
||||
void scsi_adjust_queue_depth(struct scsi_device *sdev, int tags)
|
||||
int scsi_change_queue_depth(struct scsi_device *sdev, int tags)
|
||||
|
||||
|
||||
/**
|
||||
@ -1214,7 +1214,7 @@ of interest:
|
||||
for disk firmware uploads.
|
||||
cmd_per_lun - maximum number of commands that can be queued on devices
|
||||
controlled by the host. Overridden by LLD calls to
|
||||
scsi_adjust_queue_depth().
|
||||
scsi_change_queue_depth().
|
||||
unchecked_isa_dma - 1=>only use bottom 16 MB of ram (ISA DMA addressing
|
||||
restriction), 0=>can use full 32 bit (or better) DMA
|
||||
address space
|
||||
@ -1254,7 +1254,7 @@ struct scsi_cmnd
|
||||
Instances of this structure convey SCSI commands to the LLD and responses
|
||||
back to the mid level. The SCSI mid level will ensure that no more SCSI
|
||||
commands become queued against the LLD than are indicated by
|
||||
scsi_adjust_queue_depth() (or struct Scsi_Host::cmd_per_lun). There will
|
||||
scsi_change_queue_depth() (or struct Scsi_Host::cmd_per_lun). There will
|
||||
be at least one instance of struct scsi_cmnd available for each SCSI device.
|
||||
Members of interest:
|
||||
cmnd - array containing SCSI command
|
||||
|
@ -1164,7 +1164,7 @@ static int ata_scsi_dev_config(struct scsi_device *sdev,
|
||||
|
||||
depth = min(sdev->host->can_queue, ata_id_queue_depth(dev->id));
|
||||
depth = min(ATA_MAX_QUEUE - 1, depth);
|
||||
scsi_adjust_queue_depth(sdev, depth);
|
||||
scsi_change_queue_depth(sdev, depth);
|
||||
}
|
||||
|
||||
blk_queue_flush_queueable(q, false);
|
||||
@ -1243,21 +1243,17 @@ void ata_scsi_slave_destroy(struct scsi_device *sdev)
|
||||
* @ap: ATA port to which the device change the queue depth
|
||||
* @sdev: SCSI device to configure queue depth for
|
||||
* @queue_depth: new queue depth
|
||||
* @reason: calling context
|
||||
*
|
||||
* libsas and libata have different approaches for associating a sdev to
|
||||
* its ata_port.
|
||||
*
|
||||
*/
|
||||
int __ata_change_queue_depth(struct ata_port *ap, struct scsi_device *sdev,
|
||||
int queue_depth, int reason)
|
||||
int queue_depth)
|
||||
{
|
||||
struct ata_device *dev;
|
||||
unsigned long flags;
|
||||
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (queue_depth < 1 || queue_depth == sdev->queue_depth)
|
||||
return sdev->queue_depth;
|
||||
|
||||
@ -1282,15 +1278,13 @@ int __ata_change_queue_depth(struct ata_port *ap, struct scsi_device *sdev,
|
||||
if (sdev->queue_depth == queue_depth)
|
||||
return -EINVAL;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, queue_depth);
|
||||
return queue_depth;
|
||||
return scsi_change_queue_depth(sdev, queue_depth);
|
||||
}
|
||||
|
||||
/**
|
||||
* ata_scsi_change_queue_depth - SCSI callback for queue depth config
|
||||
* @sdev: SCSI device to configure queue depth for
|
||||
* @queue_depth: new queue depth
|
||||
* @reason: calling context
|
||||
*
|
||||
* This is libata standard hostt->change_queue_depth callback.
|
||||
* SCSI will call into this callback when user tries to set queue
|
||||
@ -1302,12 +1296,11 @@ int __ata_change_queue_depth(struct ata_port *ap, struct scsi_device *sdev,
|
||||
* RETURNS:
|
||||
* Newly configured queue depth.
|
||||
*/
|
||||
int ata_scsi_change_queue_depth(struct scsi_device *sdev, int queue_depth,
|
||||
int reason)
|
||||
int ata_scsi_change_queue_depth(struct scsi_device *sdev, int queue_depth)
|
||||
{
|
||||
struct ata_port *ap = ata_shost_to_port(sdev->host);
|
||||
|
||||
return __ata_change_queue_depth(ap, sdev, queue_depth, reason);
|
||||
return __ata_change_queue_depth(ap, sdev, queue_depth);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1951,7 +1951,7 @@ static int nv_swncq_slave_config(struct scsi_device *sdev)
|
||||
ata_id_c_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num));
|
||||
|
||||
if (strncmp(model_num, "Maxtor", 6) == 0) {
|
||||
ata_scsi_change_queue_depth(sdev, 1, SCSI_QDEPTH_DEFAULT);
|
||||
ata_scsi_change_queue_depth(sdev, 1);
|
||||
ata_dev_notice(dev, "Disabling SWNCQ mode (depth %x)\n",
|
||||
sdev->queue_depth);
|
||||
}
|
||||
|
@ -911,7 +911,7 @@ static struct scsi_host_template iscsi_iser_sht = {
|
||||
.module = THIS_MODULE,
|
||||
.name = "iSCSI Initiator over iSER",
|
||||
.queuecommand = iscsi_queuecommand,
|
||||
.change_queue_depth = iscsi_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.sg_tablesize = ISCSI_ISER_SG_TABLESIZE,
|
||||
.max_sectors = 1024,
|
||||
.cmd_per_lun = ISER_DEF_CMD_PER_LUN,
|
||||
|
@ -2402,18 +2402,15 @@ static int srp_cm_handler(struct ib_cm_id *cm_id, struct ib_cm_event *event)
|
||||
* srp_change_queue_depth - setting device queue depth
|
||||
* @sdev: scsi device struct
|
||||
* @qdepth: requested queue depth
|
||||
* @reason: SCSI_QDEPTH_DEFAULT
|
||||
* (see include/scsi/scsi_host.h for definition)
|
||||
*
|
||||
* Returns queue depth.
|
||||
*/
|
||||
static int
|
||||
srp_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
||||
srp_change_queue_depth(struct scsi_device *sdev, int qdepth)
|
||||
{
|
||||
if (!sdev->tagged_supported)
|
||||
qdepth = 1;
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
return sdev->queue_depth;
|
||||
return scsi_change_queue_depth(sdev, qdepth);
|
||||
}
|
||||
|
||||
static int srp_send_tsk_mgmt(struct srp_rdma_ch *ch, u64 req_tag,
|
||||
|
@ -2311,12 +2311,11 @@ mptscsih_slave_destroy(struct scsi_device *sdev)
|
||||
* mptscsih_change_queue_depth - This function will set a devices queue depth
|
||||
* @sdev: per scsi_device pointer
|
||||
* @qdepth: requested queue depth
|
||||
* @reason: calling context
|
||||
*
|
||||
* Adding support for new 'change_queue_depth' api.
|
||||
*/
|
||||
int
|
||||
mptscsih_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
||||
mptscsih_change_queue_depth(struct scsi_device *sdev, int qdepth)
|
||||
{
|
||||
MPT_SCSI_HOST *hd = shost_priv(sdev->host);
|
||||
VirtTarget *vtarget;
|
||||
@ -2327,9 +2326,6 @@ mptscsih_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
||||
starget = scsi_target(sdev);
|
||||
vtarget = starget->hostdata;
|
||||
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (ioc->bus_type == SPI) {
|
||||
if (!(vtarget->tflags & MPT_TARGET_FLAGS_Q_YES))
|
||||
max_depth = 1;
|
||||
@ -2347,8 +2343,7 @@ mptscsih_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
||||
if (qdepth > max_depth)
|
||||
qdepth = max_depth;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
return sdev->queue_depth;
|
||||
return scsi_change_queue_depth(sdev, qdepth);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2392,8 +2387,7 @@ mptscsih_slave_configure(struct scsi_device *sdev)
|
||||
ioc->name, vtarget->negoFlags, vtarget->maxOffset,
|
||||
vtarget->minSyncFactor));
|
||||
|
||||
mptscsih_change_queue_depth(sdev, MPT_SCSI_CMD_PER_DEV_HIGH,
|
||||
SCSI_QDEPTH_DEFAULT);
|
||||
mptscsih_change_queue_depth(sdev, MPT_SCSI_CMD_PER_DEV_HIGH);
|
||||
dsprintk(ioc, printk(MYIOC_s_DEBUG_FMT
|
||||
"tagged %d, simple %d\n",
|
||||
ioc->name,sdev->tagged_supported, sdev->simple_tags));
|
||||
|
@ -128,8 +128,7 @@ extern int mptscsih_taskmgmt_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_F
|
||||
extern int mptscsih_scandv_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *r);
|
||||
extern int mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply);
|
||||
extern int mptscsih_ioc_reset(MPT_ADAPTER *ioc, int post_reset);
|
||||
extern int mptscsih_change_queue_depth(struct scsi_device *sdev, int qdepth,
|
||||
int reason);
|
||||
extern int mptscsih_change_queue_depth(struct scsi_device *sdev, int qdepth);
|
||||
extern u8 mptscsih_raid_id_to_num(MPT_ADAPTER *ioc, u8 channel, u8 id);
|
||||
extern int mptscsih_is_phys_disk(MPT_ADAPTER *ioc, u8 channel, u8 id);
|
||||
extern struct device_attribute *mptscsih_host_attrs[];
|
||||
|
@ -32,13 +32,6 @@ static bool allow_lun_scan = 1;
|
||||
module_param(allow_lun_scan, bool, 0600);
|
||||
MODULE_PARM_DESC(allow_lun_scan, "For NPIV, scan and attach all storage LUNs");
|
||||
|
||||
static int zfcp_scsi_change_queue_depth(struct scsi_device *sdev, int depth,
|
||||
int reason)
|
||||
{
|
||||
scsi_adjust_queue_depth(sdev, depth);
|
||||
return sdev->queue_depth;
|
||||
}
|
||||
|
||||
static void zfcp_scsi_slave_destroy(struct scsi_device *sdev)
|
||||
{
|
||||
struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev);
|
||||
@ -54,7 +47,7 @@ static void zfcp_scsi_slave_destroy(struct scsi_device *sdev)
|
||||
static int zfcp_scsi_slave_configure(struct scsi_device *sdp)
|
||||
{
|
||||
if (sdp->tagged_supported)
|
||||
scsi_adjust_queue_depth(sdp, default_depth);
|
||||
scsi_change_queue_depth(sdp, default_depth);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -293,7 +286,7 @@ static struct scsi_host_template zfcp_scsi_host_template = {
|
||||
.slave_alloc = zfcp_scsi_slave_alloc,
|
||||
.slave_configure = zfcp_scsi_slave_configure,
|
||||
.slave_destroy = zfcp_scsi_slave_destroy,
|
||||
.change_queue_depth = zfcp_scsi_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.proc_name = "zfcp",
|
||||
.can_queue = 4096,
|
||||
.this_id = -1,
|
||||
|
@ -189,17 +189,6 @@ static ssize_t twa_show_stats(struct device *dev,
|
||||
return len;
|
||||
} /* End twa_show_stats() */
|
||||
|
||||
/* This function will set a devices queue depth */
|
||||
static int twa_change_queue_depth(struct scsi_device *sdev, int queue_depth,
|
||||
int reason)
|
||||
{
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, queue_depth);
|
||||
return queue_depth;
|
||||
} /* End twa_change_queue_depth() */
|
||||
|
||||
/* Create sysfs 'stats' entry */
|
||||
static struct device_attribute twa_host_stats_attr = {
|
||||
.attr = {
|
||||
@ -2014,7 +2003,7 @@ static struct scsi_host_template driver_template = {
|
||||
.queuecommand = twa_scsi_queue,
|
||||
.eh_host_reset_handler = twa_scsi_eh_reset,
|
||||
.bios_param = twa_scsi_biosparam,
|
||||
.change_queue_depth = twa_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.can_queue = TW_Q_LENGTH-2,
|
||||
.slave_configure = twa_slave_configure,
|
||||
.this_id = -1,
|
||||
|
@ -191,17 +191,6 @@ static ssize_t twl_show_stats(struct device *dev,
|
||||
return len;
|
||||
} /* End twl_show_stats() */
|
||||
|
||||
/* This function will set a devices queue depth */
|
||||
static int twl_change_queue_depth(struct scsi_device *sdev, int queue_depth,
|
||||
int reason)
|
||||
{
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, queue_depth);
|
||||
return queue_depth;
|
||||
} /* End twl_change_queue_depth() */
|
||||
|
||||
/* stats sysfs attribute initializer */
|
||||
static struct device_attribute twl_host_stats_attr = {
|
||||
.attr = {
|
||||
@ -1588,7 +1577,7 @@ static struct scsi_host_template driver_template = {
|
||||
.queuecommand = twl_scsi_queue,
|
||||
.eh_host_reset_handler = twl_scsi_eh_reset,
|
||||
.bios_param = twl_scsi_biosparam,
|
||||
.change_queue_depth = twl_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.can_queue = TW_Q_LENGTH-2,
|
||||
.slave_configure = twl_slave_configure,
|
||||
.this_id = -1,
|
||||
|
@ -523,17 +523,6 @@ static ssize_t tw_show_stats(struct device *dev, struct device_attribute *attr,
|
||||
return len;
|
||||
} /* End tw_show_stats() */
|
||||
|
||||
/* This function will set a devices queue depth */
|
||||
static int tw_change_queue_depth(struct scsi_device *sdev, int queue_depth,
|
||||
int reason)
|
||||
{
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, queue_depth);
|
||||
return queue_depth;
|
||||
} /* End tw_change_queue_depth() */
|
||||
|
||||
/* Create sysfs 'stats' entry */
|
||||
static struct device_attribute tw_host_stats_attr = {
|
||||
.attr = {
|
||||
@ -2268,7 +2257,7 @@ static struct scsi_host_template driver_template = {
|
||||
.queuecommand = tw_scsi_queue,
|
||||
.eh_host_reset_handler = tw_scsi_eh_reset,
|
||||
.bios_param = tw_scsi_biosparam,
|
||||
.change_queue_depth = tw_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.can_queue = TW_Q_LENGTH-2,
|
||||
.slave_configure = tw_slave_configure,
|
||||
.this_id = -1,
|
||||
|
@ -175,7 +175,7 @@ STATIC void NCR_700_chip_reset(struct Scsi_Host *host);
|
||||
STATIC int NCR_700_slave_alloc(struct scsi_device *SDpnt);
|
||||
STATIC int NCR_700_slave_configure(struct scsi_device *SDpnt);
|
||||
STATIC void NCR_700_slave_destroy(struct scsi_device *SDpnt);
|
||||
static int NCR_700_change_queue_depth(struct scsi_device *SDpnt, int depth, int reason);
|
||||
static int NCR_700_change_queue_depth(struct scsi_device *SDpnt, int depth);
|
||||
static int NCR_700_change_queue_type(struct scsi_device *SDpnt, int depth);
|
||||
|
||||
STATIC struct device_attribute *NCR_700_dev_attrs[];
|
||||
@ -904,7 +904,7 @@ process_message(struct Scsi_Host *host, struct NCR_700_Host_Parameters *hostdata
|
||||
hostdata->tag_negotiated &= ~(1<<scmd_id(SCp));
|
||||
|
||||
SCp->device->tagged_supported = 0;
|
||||
scsi_adjust_queue_depth(SCp->device, host->cmd_per_lun);
|
||||
scsi_change_queue_depth(SCp->device, host->cmd_per_lun);
|
||||
scsi_set_tag_type(SCp->device, 0);
|
||||
} else {
|
||||
shost_printk(KERN_WARNING, host,
|
||||
@ -2052,7 +2052,7 @@ NCR_700_slave_configure(struct scsi_device *SDp)
|
||||
|
||||
/* to do here: allocate memory; build a queue_full list */
|
||||
if(SDp->tagged_supported) {
|
||||
scsi_adjust_queue_depth(SDp, NCR_700_DEFAULT_TAGS);
|
||||
scsi_change_queue_depth(SDp, NCR_700_DEFAULT_TAGS);
|
||||
NCR_700_set_tag_neg_state(SDp, NCR_700_START_TAG_NEGOTIATION);
|
||||
}
|
||||
|
||||
@ -2075,16 +2075,11 @@ NCR_700_slave_destroy(struct scsi_device *SDp)
|
||||
}
|
||||
|
||||
static int
|
||||
NCR_700_change_queue_depth(struct scsi_device *SDp, int depth, int reason)
|
||||
NCR_700_change_queue_depth(struct scsi_device *SDp, int depth)
|
||||
{
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (depth > NCR_700_MAX_TAGS)
|
||||
depth = NCR_700_MAX_TAGS;
|
||||
|
||||
scsi_adjust_queue_depth(SDp, depth);
|
||||
return depth;
|
||||
return scsi_change_queue_depth(SDp, depth);
|
||||
}
|
||||
|
||||
static int NCR_700_change_queue_type(struct scsi_device *SDp, int tag_type)
|
||||
@ -2105,12 +2100,12 @@ static int NCR_700_change_queue_type(struct scsi_device *SDp, int tag_type)
|
||||
if (!tag_type) {
|
||||
/* shift back to the default unqueued number of commands
|
||||
* (the user can still raise this) */
|
||||
scsi_adjust_queue_depth(SDp, SDp->host->cmd_per_lun);
|
||||
scsi_change_queue_depth(SDp, SDp->host->cmd_per_lun);
|
||||
hostdata->tag_negotiated &= ~(1 << sdev_id(SDp));
|
||||
} else {
|
||||
/* Here, we cleared the negotiation flag above, so this
|
||||
* will force the driver to renegotiate */
|
||||
scsi_adjust_queue_depth(SDp, SDp->queue_depth);
|
||||
scsi_change_queue_depth(SDp, SDp->queue_depth);
|
||||
if (change_tag)
|
||||
NCR_700_set_tag_neg_state(SDp, NCR_700_START_TAG_NEGOTIATION);
|
||||
}
|
||||
|
@ -2327,12 +2327,12 @@ static int blogic_slaveconfig(struct scsi_device *dev)
|
||||
if (qdepth == 0)
|
||||
qdepth = BLOGIC_MAX_AUTO_TAG_DEPTH;
|
||||
adapter->qdepth[tgt_id] = qdepth;
|
||||
scsi_adjust_queue_depth(dev, qdepth);
|
||||
scsi_change_queue_depth(dev, qdepth);
|
||||
} else {
|
||||
adapter->tagq_ok &= ~(1 << tgt_id);
|
||||
qdepth = adapter->untag_qdepth;
|
||||
adapter->qdepth[tgt_id] = qdepth;
|
||||
scsi_adjust_queue_depth(dev, qdepth);
|
||||
scsi_change_queue_depth(dev, qdepth);
|
||||
}
|
||||
qdepth = 0;
|
||||
for (tgt_id = 0; tgt_id < adapter->maxdev; tgt_id++)
|
||||
|
@ -462,9 +462,9 @@ static int aac_slave_configure(struct scsi_device *sdev)
|
||||
depth = 256;
|
||||
else if (depth < 2)
|
||||
depth = 2;
|
||||
scsi_adjust_queue_depth(sdev, depth);
|
||||
scsi_change_queue_depth(sdev, depth);
|
||||
} else
|
||||
scsi_adjust_queue_depth(sdev, 1);
|
||||
scsi_change_queue_depth(sdev, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -478,12 +478,8 @@ static int aac_slave_configure(struct scsi_device *sdev)
|
||||
* total capacity and the queue depth supported by the target device.
|
||||
*/
|
||||
|
||||
static int aac_change_queue_depth(struct scsi_device *sdev, int depth,
|
||||
int reason)
|
||||
static int aac_change_queue_depth(struct scsi_device *sdev, int depth)
|
||||
{
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (sdev->tagged_supported && (sdev->type == TYPE_DISK) &&
|
||||
(sdev_channel(sdev) == CONTAINER_CHANNEL)) {
|
||||
struct scsi_device * dev;
|
||||
@ -504,10 +500,10 @@ static int aac_change_queue_depth(struct scsi_device *sdev, int depth,
|
||||
depth = 256;
|
||||
else if (depth < 2)
|
||||
depth = 2;
|
||||
scsi_adjust_queue_depth(sdev, depth);
|
||||
} else
|
||||
scsi_adjust_queue_depth(sdev, 1);
|
||||
return sdev->queue_depth;
|
||||
return scsi_change_queue_depth(sdev, depth);
|
||||
}
|
||||
|
||||
return scsi_change_queue_depth(sdev, 1);
|
||||
}
|
||||
|
||||
static ssize_t aac_show_raid_level(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
|
@ -7706,7 +7706,7 @@ advansys_narrow_slave_configure(struct scsi_device *sdev, ASC_DVC_VAR *asc_dvc)
|
||||
asc_dvc->cfg->can_tagged_qng |= tid_bit;
|
||||
asc_dvc->use_tagged_qng |= tid_bit;
|
||||
}
|
||||
scsi_adjust_queue_depth(sdev,
|
||||
scsi_change_queue_depth(sdev,
|
||||
asc_dvc->max_dvc_qng[sdev->id]);
|
||||
}
|
||||
} else {
|
||||
@ -7847,10 +7847,8 @@ advansys_wide_slave_configure(struct scsi_device *sdev, ADV_DVC_VAR *adv_dvc)
|
||||
}
|
||||
}
|
||||
|
||||
if ((adv_dvc->tagqng_able & tidmask) && sdev->tagged_supported) {
|
||||
scsi_adjust_queue_depth(sdev,
|
||||
adv_dvc->max_dvc_qng);
|
||||
}
|
||||
if ((adv_dvc->tagqng_able & tidmask) && sdev->tagged_supported)
|
||||
scsi_change_queue_depth(sdev, adv_dvc->max_dvc_qng);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1470,7 +1470,7 @@ ahd_platform_set_tags(struct ahd_softc *ahd, struct scsi_device *sdev,
|
||||
switch ((dev->flags & (AHD_DEV_Q_BASIC|AHD_DEV_Q_TAGGED))) {
|
||||
case AHD_DEV_Q_BASIC:
|
||||
case AHD_DEV_Q_TAGGED:
|
||||
scsi_adjust_queue_depth(sdev,
|
||||
scsi_change_queue_depth(sdev,
|
||||
dev->openings + dev->active);
|
||||
break;
|
||||
default:
|
||||
@ -1480,7 +1480,7 @@ ahd_platform_set_tags(struct ahd_softc *ahd, struct scsi_device *sdev,
|
||||
* serially on the controller/device. This should
|
||||
* remove some latency.
|
||||
*/
|
||||
scsi_adjust_queue_depth(sdev, 1);
|
||||
scsi_change_queue_depth(sdev, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1336,7 +1336,7 @@ ahc_platform_set_tags(struct ahc_softc *ahc, struct scsi_device *sdev,
|
||||
switch ((dev->flags & (AHC_DEV_Q_BASIC|AHC_DEV_Q_TAGGED))) {
|
||||
case AHC_DEV_Q_BASIC:
|
||||
case AHC_DEV_Q_TAGGED:
|
||||
scsi_adjust_queue_depth(sdev,
|
||||
scsi_change_queue_depth(sdev,
|
||||
dev->openings + dev->active);
|
||||
default:
|
||||
/*
|
||||
@ -1345,7 +1345,7 @@ ahc_platform_set_tags(struct ahc_softc *ahc, struct scsi_device *sdev,
|
||||
* serially on the controller/device. This should
|
||||
* remove some latency.
|
||||
*/
|
||||
scsi_adjust_queue_depth(sdev, 2);
|
||||
scsi_change_queue_depth(sdev, 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -114,16 +114,11 @@ static void arcmsr_hardware_reset(struct AdapterControlBlock *acb);
|
||||
static const char *arcmsr_info(struct Scsi_Host *);
|
||||
static irqreturn_t arcmsr_interrupt(struct AdapterControlBlock *acb);
|
||||
static void arcmsr_free_irq(struct pci_dev *, struct AdapterControlBlock *);
|
||||
static int arcmsr_adjust_disk_queue_depth(struct scsi_device *sdev,
|
||||
int queue_depth, int reason)
|
||||
static int arcmsr_adjust_disk_queue_depth(struct scsi_device *sdev, int queue_depth)
|
||||
{
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (queue_depth > ARCMSR_MAX_CMD_PERLUN)
|
||||
queue_depth = ARCMSR_MAX_CMD_PERLUN;
|
||||
scsi_adjust_queue_depth(sdev, queue_depth);
|
||||
return queue_depth;
|
||||
return scsi_change_queue_depth(sdev, queue_depth);
|
||||
}
|
||||
|
||||
static struct scsi_host_template arcmsr_scsi_host_template = {
|
||||
|
@ -556,7 +556,7 @@ static struct scsi_host_template beiscsi_sht = {
|
||||
.name = "Emulex 10Gbe open-iscsi Initiator Driver",
|
||||
.proc_name = DRV_NAME,
|
||||
.queuecommand = iscsi_queuecommand,
|
||||
.change_queue_depth = iscsi_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.slave_configure = beiscsi_slave_configure,
|
||||
.target_alloc = iscsi_target_alloc,
|
||||
.eh_abort_handler = beiscsi_eh_abort,
|
||||
|
@ -776,7 +776,7 @@ bfad_thread_workq(struct bfad_s *bfad)
|
||||
static int
|
||||
bfad_im_slave_configure(struct scsi_device *sdev)
|
||||
{
|
||||
scsi_adjust_queue_depth(sdev, bfa_lun_queue_depth);
|
||||
scsi_change_queue_depth(sdev, bfa_lun_queue_depth);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -866,7 +866,7 @@ bfad_ramp_up_qdepth(struct bfad_itnim_s *itnim, struct scsi_device *sdev)
|
||||
if (bfa_lun_queue_depth > tmp_sdev->queue_depth) {
|
||||
if (tmp_sdev->id != sdev->id)
|
||||
continue;
|
||||
scsi_adjust_queue_depth(tmp_sdev,
|
||||
scsi_change_queue_depth(tmp_sdev,
|
||||
tmp_sdev->queue_depth + 1);
|
||||
|
||||
itnim->last_ramp_up_time = jiffies;
|
||||
|
@ -2784,7 +2784,7 @@ static struct scsi_host_template bnx2fc_shost_template = {
|
||||
.eh_target_reset_handler = bnx2fc_eh_target_reset, /* tgt reset */
|
||||
.eh_host_reset_handler = fc_eh_host_reset,
|
||||
.slave_alloc = fc_slave_alloc,
|
||||
.change_queue_depth = fc_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.change_queue_type = scsi_change_queue_type,
|
||||
.this_id = -1,
|
||||
.cmd_per_lun = 3,
|
||||
|
@ -2259,7 +2259,7 @@ static struct scsi_host_template bnx2i_host_template = {
|
||||
.eh_abort_handler = iscsi_eh_abort,
|
||||
.eh_device_reset_handler = iscsi_eh_device_reset,
|
||||
.eh_target_reset_handler = iscsi_eh_recover_target,
|
||||
.change_queue_depth = iscsi_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.target_alloc = iscsi_target_alloc,
|
||||
.can_queue = 2048,
|
||||
.max_sectors = 127,
|
||||
|
@ -2241,7 +2241,7 @@ csio_slave_alloc(struct scsi_device *sdev)
|
||||
static int
|
||||
csio_slave_configure(struct scsi_device *sdev)
|
||||
{
|
||||
scsi_adjust_queue_depth(sdev, csio_lun_qdepth);
|
||||
scsi_change_queue_depth(sdev, csio_lun_qdepth);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -86,7 +86,7 @@ static struct scsi_host_template cxgb3i_host_template = {
|
||||
.proc_name = DRV_MODULE_NAME,
|
||||
.can_queue = CXGB3I_SCSI_HOST_QDEPTH,
|
||||
.queuecommand = iscsi_queuecommand,
|
||||
.change_queue_depth = iscsi_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.sg_tablesize = SG_ALL,
|
||||
.max_sectors = 0xFFFF,
|
||||
.cmd_per_lun = ISCSI_DEF_CMD_PER_LUN,
|
||||
|
@ -89,7 +89,7 @@ static struct scsi_host_template cxgb4i_host_template = {
|
||||
.proc_name = DRV_MODULE_NAME,
|
||||
.can_queue = CXGB4I_SCSI_HOST_QDEPTH,
|
||||
.queuecommand = iscsi_queuecommand,
|
||||
.change_queue_depth = iscsi_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.sg_tablesize = SG_ALL,
|
||||
.max_sectors = 0xFFFF,
|
||||
.cmd_per_lun = ISCSI_DEF_CMD_PER_LUN,
|
||||
|
@ -415,7 +415,7 @@ static int adpt_slave_configure(struct scsi_device * device)
|
||||
pHba = (adpt_hba *) host->hostdata[0];
|
||||
|
||||
if (host->can_queue && device->tagged_supported) {
|
||||
scsi_adjust_queue_depth(device,
|
||||
scsi_change_queue_depth(device,
|
||||
host->can_queue - 1);
|
||||
}
|
||||
return 0;
|
||||
|
@ -952,12 +952,12 @@ static int eata2x_slave_configure(struct scsi_device *dev)
|
||||
} else {
|
||||
tag_suffix = ", no tags";
|
||||
}
|
||||
scsi_adjust_queue_depth(dev, tqd);
|
||||
scsi_change_queue_depth(dev, tqd);
|
||||
} else if (TLDEV(dev->type) && linked_comm) {
|
||||
scsi_adjust_queue_depth(dev, tqd);
|
||||
scsi_change_queue_depth(dev, tqd);
|
||||
tag_suffix = ", untagged";
|
||||
} else {
|
||||
scsi_adjust_queue_depth(dev, utqd);
|
||||
scsi_change_queue_depth(dev, utqd);
|
||||
tag_suffix = "";
|
||||
}
|
||||
|
||||
|
@ -972,7 +972,6 @@ u8 handle_hba_ioctl(struct esas2r_adapter *a,
|
||||
struct atto_ioctl *ioctl_hba);
|
||||
int esas2r_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd);
|
||||
int esas2r_show_info(struct seq_file *m, struct Scsi_Host *sh);
|
||||
int esas2r_change_queue_depth(struct scsi_device *dev, int depth, int reason);
|
||||
long esas2r_proc_ioctl(struct file *fp, unsigned int cmd, unsigned long arg);
|
||||
|
||||
/* SCSI error handler (eh) functions */
|
||||
|
@ -254,7 +254,7 @@ static struct scsi_host_template driver_template = {
|
||||
.use_clustering = ENABLE_CLUSTERING,
|
||||
.emulated = 0,
|
||||
.proc_name = ESAS2R_DRVR_NAME,
|
||||
.change_queue_depth = esas2r_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.change_queue_type = scsi_change_queue_type,
|
||||
.max_sectors = 0xFFFF,
|
||||
.use_blk_tags = 1,
|
||||
@ -1257,15 +1257,6 @@ int esas2r_target_reset(struct scsi_cmnd *cmd)
|
||||
return esas2r_dev_targ_reset(cmd, true);
|
||||
}
|
||||
|
||||
int esas2r_change_queue_depth(struct scsi_device *dev, int depth, int reason)
|
||||
{
|
||||
esas2r_log(ESAS2R_LOG_INFO, "change_queue_depth %p, %d", dev, depth);
|
||||
|
||||
scsi_adjust_queue_depth(dev, depth);
|
||||
|
||||
return dev->queue_depth;
|
||||
}
|
||||
|
||||
void esas2r_log_request_failure(struct esas2r_adapter *a,
|
||||
struct esas2r_request *rq)
|
||||
{
|
||||
|
@ -2407,7 +2407,7 @@ static int esp_slave_configure(struct scsi_device *dev)
|
||||
/* XXX make this configurable somehow XXX */
|
||||
int goal_tags = min(ESP_DEFAULT_TAGS, ESP_MAX_TAG);
|
||||
|
||||
scsi_adjust_queue_depth(dev, goal_tags);
|
||||
scsi_change_queue_depth(dev, goal_tags);
|
||||
}
|
||||
|
||||
tp->flags |= ESP_TGT_DISCONNECT;
|
||||
|
@ -280,7 +280,7 @@ static struct scsi_host_template fcoe_shost_template = {
|
||||
.eh_device_reset_handler = fc_eh_device_reset,
|
||||
.eh_host_reset_handler = fc_eh_host_reset,
|
||||
.slave_alloc = fc_slave_alloc,
|
||||
.change_queue_depth = fc_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.change_queue_type = scsi_change_queue_type,
|
||||
.this_id = -1,
|
||||
.cmd_per_lun = 3,
|
||||
|
@ -98,7 +98,7 @@ static int fnic_slave_alloc(struct scsi_device *sdev)
|
||||
if (!rport || fc_remote_port_chkready(rport))
|
||||
return -ENXIO;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, fnic_max_qdepth);
|
||||
scsi_change_queue_depth(sdev, fnic_max_qdepth);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -110,7 +110,7 @@ static struct scsi_host_template fnic_host_template = {
|
||||
.eh_device_reset_handler = fnic_device_reset,
|
||||
.eh_host_reset_handler = fnic_host_reset,
|
||||
.slave_alloc = fnic_slave_alloc,
|
||||
.change_queue_depth = fc_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.change_queue_type = scsi_change_queue_type,
|
||||
.this_id = -1,
|
||||
.cmd_per_lun = 3,
|
||||
|
@ -216,8 +216,6 @@ static int hpsa_scsi_queue_command(struct Scsi_Host *h, struct scsi_cmnd *cmd);
|
||||
static void hpsa_scan_start(struct Scsi_Host *);
|
||||
static int hpsa_scan_finished(struct Scsi_Host *sh,
|
||||
unsigned long elapsed_time);
|
||||
static int hpsa_change_queue_depth(struct scsi_device *sdev,
|
||||
int qdepth, int reason);
|
||||
|
||||
static int hpsa_eh_device_reset_handler(struct scsi_cmnd *scsicmd);
|
||||
static int hpsa_eh_abort_handler(struct scsi_cmnd *scsicmd);
|
||||
@ -673,7 +671,7 @@ static struct scsi_host_template hpsa_driver_template = {
|
||||
.queuecommand = hpsa_scsi_queue_command,
|
||||
.scan_start = hpsa_scan_start,
|
||||
.scan_finished = hpsa_scan_finished,
|
||||
.change_queue_depth = hpsa_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.this_id = -1,
|
||||
.use_clustering = ENABLE_CLUSTERING,
|
||||
.eh_abort_handler = hpsa_eh_abort_handler,
|
||||
@ -4074,18 +4072,6 @@ static int hpsa_scan_finished(struct Scsi_Host *sh,
|
||||
return finished;
|
||||
}
|
||||
|
||||
static int hpsa_change_queue_depth(struct scsi_device *sdev,
|
||||
int qdepth, int reason)
|
||||
{
|
||||
struct ctlr_info *h = sdev_to_hba(sdev);
|
||||
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -ENOTSUPP;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
return sdev->queue_depth;
|
||||
}
|
||||
|
||||
static void hpsa_unregister_scsi(struct ctlr_info *h)
|
||||
{
|
||||
/* we are being forcibly unloaded, and may not refuse. */
|
||||
|
@ -1118,17 +1118,13 @@ static int hptiop_reset(struct scsi_cmnd *scp)
|
||||
}
|
||||
|
||||
static int hptiop_adjust_disk_queue_depth(struct scsi_device *sdev,
|
||||
int queue_depth, int reason)
|
||||
int queue_depth)
|
||||
{
|
||||
struct hptiop_hba *hba = (struct hptiop_hba *)sdev->host->hostdata;
|
||||
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (queue_depth > hba->max_requests)
|
||||
queue_depth = hba->max_requests;
|
||||
scsi_adjust_queue_depth(sdev, queue_depth);
|
||||
return queue_depth;
|
||||
return scsi_change_queue_depth(sdev, queue_depth);
|
||||
}
|
||||
|
||||
static ssize_t hptiop_show_version(struct device *dev,
|
||||
|
@ -2900,17 +2900,12 @@ static int ibmvfc_slave_configure(struct scsi_device *sdev)
|
||||
* Return value:
|
||||
* actual depth set
|
||||
**/
|
||||
static int ibmvfc_change_queue_depth(struct scsi_device *sdev, int qdepth,
|
||||
int reason)
|
||||
static int ibmvfc_change_queue_depth(struct scsi_device *sdev, int qdepth)
|
||||
{
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (qdepth > IBMVFC_MAX_CMDS_PER_LUN)
|
||||
qdepth = IBMVFC_MAX_CMDS_PER_LUN;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
return sdev->queue_depth;
|
||||
return scsi_change_queue_depth(sdev, qdepth);
|
||||
}
|
||||
|
||||
static ssize_t ibmvfc_show_host_partition_name(struct device *dev,
|
||||
|
@ -1941,17 +1941,11 @@ static int ibmvscsi_slave_configure(struct scsi_device *sdev)
|
||||
* Return value:
|
||||
* actual depth set
|
||||
**/
|
||||
static int ibmvscsi_change_queue_depth(struct scsi_device *sdev, int qdepth,
|
||||
int reason)
|
||||
static int ibmvscsi_change_queue_depth(struct scsi_device *sdev, int qdepth)
|
||||
{
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (qdepth > IBMVSCSI_MAX_CMDS_PER_LUN)
|
||||
qdepth = IBMVSCSI_MAX_CMDS_PER_LUN;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
return sdev->queue_depth;
|
||||
return scsi_change_queue_depth(sdev, qdepth);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------
|
||||
|
@ -4328,16 +4328,12 @@ static int ipr_free_dump(struct ipr_ioa_cfg *ioa_cfg) { return 0; };
|
||||
* Return value:
|
||||
* actual depth set
|
||||
**/
|
||||
static int ipr_change_queue_depth(struct scsi_device *sdev, int qdepth,
|
||||
int reason)
|
||||
static int ipr_change_queue_depth(struct scsi_device *sdev, int qdepth)
|
||||
{
|
||||
struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)sdev->host->hostdata;
|
||||
struct ipr_resource_entry *res;
|
||||
unsigned long lock_flags = 0;
|
||||
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags);
|
||||
res = (struct ipr_resource_entry *)sdev->hostdata;
|
||||
|
||||
@ -4345,7 +4341,7 @@ static int ipr_change_queue_depth(struct scsi_device *sdev, int qdepth,
|
||||
qdepth = IPR_MAX_CMD_PER_ATA_LUN;
|
||||
spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
|
||||
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
scsi_change_queue_depth(sdev, qdepth);
|
||||
return sdev->queue_depth;
|
||||
}
|
||||
|
||||
@ -4752,7 +4748,7 @@ static int ipr_slave_configure(struct scsi_device *sdev)
|
||||
spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
|
||||
|
||||
if (ap) {
|
||||
scsi_adjust_queue_depth(sdev, IPR_MAX_CMD_PER_ATA_LUN);
|
||||
scsi_change_queue_depth(sdev, IPR_MAX_CMD_PER_ATA_LUN);
|
||||
ata_sas_slave_configure(sdev, ap);
|
||||
}
|
||||
|
||||
|
@ -1210,7 +1210,7 @@ ips_slave_configure(struct scsi_device * SDptr)
|
||||
min = ha->max_cmds / 2;
|
||||
if (ha->enq->ucLogDriveCount <= 2)
|
||||
min = ha->max_cmds - 1;
|
||||
scsi_adjust_queue_depth(SDptr, min);
|
||||
scsi_change_queue_depth(SDptr, min);
|
||||
}
|
||||
|
||||
SDptr->skip_ms_page_8 = 1;
|
||||
|
@ -952,7 +952,7 @@ static struct scsi_host_template iscsi_sw_tcp_sht = {
|
||||
.module = THIS_MODULE,
|
||||
.name = "iSCSI Initiator over TCP/IP",
|
||||
.queuecommand = iscsi_queuecommand,
|
||||
.change_queue_depth = iscsi_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.can_queue = ISCSI_DEF_XMIT_CMDS_MAX - 1,
|
||||
.sg_tablesize = 4096,
|
||||
.max_sectors = 0xFFFF,
|
||||
|
@ -2160,24 +2160,11 @@ int fc_slave_alloc(struct scsi_device *sdev)
|
||||
if (!rport || fc_remote_port_chkready(rport))
|
||||
return -ENXIO;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, FC_FCP_DFLT_QUEUE_DEPTH);
|
||||
scsi_change_queue_depth(sdev, FC_FCP_DFLT_QUEUE_DEPTH);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(fc_slave_alloc);
|
||||
|
||||
/**
|
||||
* fc_change_queue_depth() - Change a device's queue depth
|
||||
* @sdev: The SCSI device whose queue depth is to change
|
||||
* @qdepth: The new queue depth
|
||||
* @reason: The resason for the change
|
||||
*/
|
||||
int fc_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
||||
{
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
return sdev->queue_depth;
|
||||
}
|
||||
EXPORT_SYMBOL(fc_change_queue_depth);
|
||||
|
||||
/**
|
||||
* fc_fcp_destory() - Tear down the FCP layer for a given local port
|
||||
* @lport: The local port that no longer needs the FCP layer
|
||||
|
@ -1771,13 +1771,6 @@ fault:
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(iscsi_queuecommand);
|
||||
|
||||
int iscsi_change_queue_depth(struct scsi_device *sdev, int depth, int reason)
|
||||
{
|
||||
scsi_adjust_queue_depth(sdev, depth);
|
||||
return sdev->queue_depth;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(iscsi_change_queue_depth);
|
||||
|
||||
int iscsi_target_alloc(struct scsi_target *starget)
|
||||
{
|
||||
struct iscsi_cls_session *cls_session = starget_to_session(starget);
|
||||
|
@ -940,12 +940,12 @@ int sas_slave_configure(struct scsi_device *scsi_dev)
|
||||
sas_read_port_mode_page(scsi_dev);
|
||||
|
||||
if (scsi_dev->tagged_supported) {
|
||||
scsi_adjust_queue_depth(scsi_dev, SAS_DEF_QD);
|
||||
scsi_change_queue_depth(scsi_dev, SAS_DEF_QD);
|
||||
} else {
|
||||
SAS_DPRINTK("device %llx, LUN %llx doesn't support "
|
||||
"TCQ\n", SAS_ADDR(dev->sas_addr),
|
||||
scsi_dev->lun);
|
||||
scsi_adjust_queue_depth(scsi_dev, 1);
|
||||
scsi_change_queue_depth(scsi_dev, 1);
|
||||
}
|
||||
|
||||
scsi_dev->allow_restart = 1;
|
||||
@ -953,18 +953,16 @@ int sas_slave_configure(struct scsi_device *scsi_dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sas_change_queue_depth(struct scsi_device *sdev, int depth, int reason)
|
||||
int sas_change_queue_depth(struct scsi_device *sdev, int depth)
|
||||
{
|
||||
struct domain_device *dev = sdev_to_domain_dev(sdev);
|
||||
|
||||
if (dev_is_sata(dev))
|
||||
return __ata_change_queue_depth(dev->sata_dev.ap, sdev, depth,
|
||||
reason);
|
||||
return __ata_change_queue_depth(dev->sata_dev.ap, sdev, depth);
|
||||
|
||||
if (!sdev->tagged_supported)
|
||||
depth = 1;
|
||||
scsi_adjust_queue_depth(sdev, depth);
|
||||
return depth;
|
||||
return scsi_change_queue_depth(sdev, depth);
|
||||
}
|
||||
|
||||
int sas_change_queue_type(struct scsi_device *scsi_dev, int type)
|
||||
|
@ -242,23 +242,6 @@ lpfc_update_stats(struct lpfc_hba *phba, struct lpfc_scsi_buf *lpfc_cmd)
|
||||
spin_unlock_irqrestore(shost->host_lock, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
* lpfc_change_queue_depth - Alter scsi device queue depth
|
||||
* @sdev: Pointer the scsi device on which to change the queue depth.
|
||||
* @qdepth: New queue depth to set the sdev to.
|
||||
* @reason: The reason for the queue depth change.
|
||||
*
|
||||
* This function is called by the midlayer and the LLD to alter the queue
|
||||
* depth for a scsi device. This function sets the queue depth to the new
|
||||
* value and sends an event out to log the queue depth change.
|
||||
**/
|
||||
static int
|
||||
lpfc_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
||||
{
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
return sdev->queue_depth;
|
||||
}
|
||||
|
||||
/**
|
||||
* lpfc_rampdown_queue_depth - Post RAMP_DOWN_QUEUE event to worker thread
|
||||
* @phba: The Hba for which this call is being executed.
|
||||
@ -344,8 +327,7 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba)
|
||||
else
|
||||
new_queue_depth = sdev->queue_depth -
|
||||
new_queue_depth;
|
||||
lpfc_change_queue_depth(sdev, new_queue_depth,
|
||||
SCSI_QDEPTH_DEFAULT);
|
||||
scsi_change_queue_depth(sdev, new_queue_depth);
|
||||
}
|
||||
}
|
||||
lpfc_destroy_vport_work_array(phba, vports);
|
||||
@ -5513,7 +5495,7 @@ lpfc_slave_configure(struct scsi_device *sdev)
|
||||
struct lpfc_vport *vport = (struct lpfc_vport *) sdev->host->hostdata;
|
||||
struct lpfc_hba *phba = vport->phba;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, vport->cfg_lun_queue_depth);
|
||||
scsi_change_queue_depth(sdev, vport->cfg_lun_queue_depth);
|
||||
|
||||
if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) {
|
||||
lpfc_sli_handle_fast_ring_event(phba,
|
||||
@ -5896,7 +5878,7 @@ struct scsi_host_template lpfc_template = {
|
||||
.shost_attrs = lpfc_hba_attrs,
|
||||
.max_sectors = 0xFFFF,
|
||||
.vendor_id = LPFC_NL_VENDOR_ID,
|
||||
.change_queue_depth = lpfc_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.change_queue_type = scsi_change_queue_type,
|
||||
.use_blk_tags = 1,
|
||||
.track_queue_depth = 1,
|
||||
@ -5921,7 +5903,7 @@ struct scsi_host_template lpfc_vport_template = {
|
||||
.use_clustering = ENABLE_CLUSTERING,
|
||||
.shost_attrs = lpfc_vport_attrs,
|
||||
.max_sectors = 0xFFFF,
|
||||
.change_queue_depth = lpfc_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.change_queue_type = scsi_change_queue_type,
|
||||
.use_blk_tags = 1,
|
||||
.track_queue_depth = 1,
|
||||
|
@ -332,25 +332,6 @@ static struct device_attribute *megaraid_sdev_attrs[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
/**
|
||||
* megaraid_change_queue_depth - Change the device's queue depth
|
||||
* @sdev: scsi device struct
|
||||
* @qdepth: depth to set
|
||||
* @reason: calling context
|
||||
*
|
||||
* Return value:
|
||||
* actual depth set
|
||||
*/
|
||||
static int megaraid_change_queue_depth(struct scsi_device *sdev, int qdepth,
|
||||
int reason)
|
||||
{
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
return sdev->queue_depth;
|
||||
}
|
||||
|
||||
/*
|
||||
* Scsi host template for megaraid unified driver
|
||||
*/
|
||||
@ -363,7 +344,7 @@ static struct scsi_host_template megaraid_template_g = {
|
||||
.eh_device_reset_handler = megaraid_reset_handler,
|
||||
.eh_bus_reset_handler = megaraid_reset_handler,
|
||||
.eh_host_reset_handler = megaraid_reset_handler,
|
||||
.change_queue_depth = megaraid_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.use_clustering = ENABLE_CLUSTERING,
|
||||
.no_write_same = 1,
|
||||
.sdev_attrs = megaraid_sdev_attrs,
|
||||
|
@ -2591,17 +2591,6 @@ megasas_service_aen(struct megasas_instance *instance, struct megasas_cmd *cmd)
|
||||
}
|
||||
}
|
||||
|
||||
static int megasas_change_queue_depth(struct scsi_device *sdev,
|
||||
int queue_depth, int reason)
|
||||
{
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, queue_depth);
|
||||
|
||||
return queue_depth;
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
megasas_fw_crash_buffer_store(struct device *cdev,
|
||||
struct device_attribute *attr, const char *buf, size_t count)
|
||||
@ -2766,7 +2755,7 @@ static struct scsi_host_template megasas_template = {
|
||||
.shost_attrs = megaraid_host_attrs,
|
||||
.bios_param = megasas_bios_param,
|
||||
.use_clustering = ENABLE_CLUSTERING,
|
||||
.change_queue_depth = megasas_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.no_write_same = 1,
|
||||
};
|
||||
|
||||
|
@ -1222,20 +1222,18 @@ _scsih_adjust_queue_depth(struct scsi_device *sdev, int qdepth)
|
||||
max_depth = 1;
|
||||
if (qdepth > max_depth)
|
||||
qdepth = max_depth;
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
scsi_change_queue_depth(sdev, qdepth);
|
||||
}
|
||||
|
||||
/**
|
||||
* _scsih_change_queue_depth - setting device queue depth
|
||||
* @sdev: scsi device struct
|
||||
* @qdepth: requested queue depth
|
||||
* @reason: SCSI_QDEPTH_DEFAULT
|
||||
* (see include/scsi/scsi_host.h for definition)
|
||||
*
|
||||
* Returns queue depth.
|
||||
*/
|
||||
static int
|
||||
_scsih_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
||||
_scsih_change_queue_depth(struct scsi_device *sdev, int qdepth)
|
||||
{
|
||||
_scsih_adjust_queue_depth(sdev, qdepth);
|
||||
|
||||
@ -2077,7 +2075,7 @@ _scsih_slave_configure(struct scsi_device *sdev)
|
||||
r_level, raid_device->handle,
|
||||
(unsigned long long)raid_device->wwid,
|
||||
raid_device->num_pds, ds);
|
||||
_scsih_change_queue_depth(sdev, qdepth, SCSI_QDEPTH_DEFAULT);
|
||||
_scsih_change_queue_depth(sdev, qdepth);
|
||||
/* raid transport support */
|
||||
if (!ioc->is_warpdrive)
|
||||
_scsih_set_level(sdev, raid_device->volume_type);
|
||||
@ -2142,7 +2140,7 @@ _scsih_slave_configure(struct scsi_device *sdev)
|
||||
_scsih_display_sata_capabilities(ioc, handle, sdev);
|
||||
|
||||
|
||||
_scsih_change_queue_depth(sdev, qdepth, SCSI_QDEPTH_DEFAULT);
|
||||
_scsih_change_queue_depth(sdev, qdepth);
|
||||
|
||||
if (ssp_target) {
|
||||
sas_read_port_mode_page(sdev);
|
||||
|
@ -1090,20 +1090,18 @@ _scsih_adjust_queue_depth(struct scsi_device *sdev, int qdepth)
|
||||
max_depth = 1;
|
||||
if (qdepth > max_depth)
|
||||
qdepth = max_depth;
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
scsi_change_queue_depth(sdev, qdepth);
|
||||
}
|
||||
|
||||
/**
|
||||
* _scsih_change_queue_depth - setting device queue depth
|
||||
* @sdev: scsi device struct
|
||||
* @qdepth: requested queue depth
|
||||
* @reason: SCSI_QDEPTH_DEFAULT
|
||||
* (see include/scsi/scsi_host.h for definition)
|
||||
*
|
||||
* Returns queue depth.
|
||||
*/
|
||||
static int
|
||||
_scsih_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
||||
_scsih_change_queue_depth(struct scsi_device *sdev, int qdepth)
|
||||
{
|
||||
_scsih_adjust_queue_depth(sdev, qdepth);
|
||||
|
||||
@ -1734,7 +1732,7 @@ _scsih_slave_configure(struct scsi_device *sdev)
|
||||
raid_device->num_pds, ds);
|
||||
|
||||
|
||||
_scsih_change_queue_depth(sdev, qdepth, SCSI_QDEPTH_DEFAULT);
|
||||
_scsih_change_queue_depth(sdev, qdepth);
|
||||
|
||||
/* raid transport support */
|
||||
_scsih_set_level(sdev, raid_device->volume_type);
|
||||
@ -1800,7 +1798,7 @@ _scsih_slave_configure(struct scsi_device *sdev)
|
||||
_scsih_display_sata_capabilities(ioc, handle, sdev);
|
||||
|
||||
|
||||
_scsih_change_queue_depth(sdev, qdepth, SCSI_QDEPTH_DEFAULT);
|
||||
_scsih_change_queue_depth(sdev, qdepth);
|
||||
|
||||
if (ssp_target) {
|
||||
sas_read_port_mode_page(sdev);
|
||||
|
@ -7997,7 +7997,7 @@ static int ncr53c8xx_slave_configure(struct scsi_device *device)
|
||||
if (depth_to_use > MAX_TAGS)
|
||||
depth_to_use = MAX_TAGS;
|
||||
|
||||
scsi_adjust_queue_depth(device, depth_to_use);
|
||||
scsi_change_queue_depth(device, depth_to_use);
|
||||
|
||||
/*
|
||||
** Since the queue depth is not tunable under Linux,
|
||||
|
@ -285,23 +285,15 @@ static void pmcraid_slave_destroy(struct scsi_device *scsi_dev)
|
||||
* pmcraid_change_queue_depth - Change the device's queue depth
|
||||
* @scsi_dev: scsi device struct
|
||||
* @depth: depth to set
|
||||
* @reason: calling context
|
||||
*
|
||||
* Return value
|
||||
* actual depth set
|
||||
*/
|
||||
static int pmcraid_change_queue_depth(struct scsi_device *scsi_dev, int depth,
|
||||
int reason)
|
||||
static int pmcraid_change_queue_depth(struct scsi_device *scsi_dev, int depth)
|
||||
{
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (depth > PMCRAID_MAX_CMD_PER_LUN)
|
||||
depth = PMCRAID_MAX_CMD_PER_LUN;
|
||||
|
||||
scsi_adjust_queue_depth(scsi_dev, depth);
|
||||
|
||||
return scsi_dev->queue_depth;
|
||||
return scsi_change_queue_depth(scsi_dev, depth);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1224,9 +1224,9 @@ qla1280_slave_configure(struct scsi_device *device)
|
||||
|
||||
if (device->tagged_supported &&
|
||||
(ha->bus_settings[bus].qtag_enables & (BIT_0 << target))) {
|
||||
scsi_adjust_queue_depth(device, ha->bus_settings[bus].hiwat);
|
||||
scsi_change_queue_depth(device, ha->bus_settings[bus].hiwat);
|
||||
} else {
|
||||
scsi_adjust_queue_depth(device, default_depth);
|
||||
scsi_change_queue_depth(device, default_depth);
|
||||
}
|
||||
|
||||
nv->bus[bus].target[target].parameter.enable_sync = device->sdtr;
|
||||
|
@ -236,7 +236,6 @@ static int qla2xxx_eh_target_reset(struct scsi_cmnd *);
|
||||
static int qla2xxx_eh_bus_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 void qla2x00_clear_drv_active(struct qla_hw_data *);
|
||||
static void qla2x00_free_device(scsi_qla_host_t *);
|
||||
static void qla83xx_disable_laser(scsi_qla_host_t *vha);
|
||||
@ -258,7 +257,7 @@ struct scsi_host_template qla2xxx_driver_template = {
|
||||
.slave_destroy = qla2xxx_slave_destroy,
|
||||
.scan_finished = qla2xxx_scan_finished,
|
||||
.scan_start = qla2xxx_scan_start,
|
||||
.change_queue_depth = qla2x00_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.change_queue_type = scsi_change_queue_type,
|
||||
.this_id = -1,
|
||||
.cmd_per_lun = 3,
|
||||
@ -1406,7 +1405,7 @@ qla2xxx_slave_configure(struct scsi_device *sdev)
|
||||
if (IS_T10_PI_CAPABLE(vha->hw))
|
||||
blk_queue_update_dma_alignment(sdev->request_queue, 0x7);
|
||||
|
||||
scsi_adjust_queue_depth(sdev, req->max_q_depth);
|
||||
scsi_change_queue_depth(sdev, req->max_q_depth);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1416,13 +1415,6 @@ qla2xxx_slave_destroy(struct scsi_device *sdev)
|
||||
sdev->hostdata = NULL;
|
||||
}
|
||||
|
||||
static int
|
||||
qla2x00_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
|
||||
{
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
return sdev->queue_depth;
|
||||
}
|
||||
|
||||
/**
|
||||
* qla2x00_config_dma_addressing() - Configure OS DMA addressing method.
|
||||
* @ha: HA context
|
||||
|
@ -201,7 +201,7 @@ static struct scsi_host_template qla4xxx_driver_template = {
|
||||
.eh_timed_out = qla4xxx_eh_cmd_timed_out,
|
||||
|
||||
.slave_alloc = qla4xxx_slave_alloc,
|
||||
.change_queue_depth = iscsi_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
|
||||
.this_id = -1,
|
||||
.cmd_per_lun = 3,
|
||||
@ -9059,7 +9059,7 @@ static int qla4xxx_slave_alloc(struct scsi_device *sdev)
|
||||
if (ql4xmaxqdepth != 0 && ql4xmaxqdepth <= 0xffffU)
|
||||
queue_depth = ql4xmaxqdepth;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, queue_depth);
|
||||
scsi_change_queue_depth(sdev, queue_depth);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -742,30 +742,18 @@ void scsi_finish_command(struct scsi_cmnd *cmd)
|
||||
}
|
||||
|
||||
/**
|
||||
* scsi_adjust_queue_depth - Let low level drivers change a device's queue depth
|
||||
* scsi_change_queue_depth - change a device's queue depth
|
||||
* @sdev: SCSI Device in question
|
||||
* @tags: Number of tags allowed if tagged queueing enabled,
|
||||
* or number of commands the low level driver can
|
||||
* queue up in non-tagged mode (as per cmd_per_lun).
|
||||
* @depth: number of commands allowed to be queued to the driver
|
||||
*
|
||||
* Returns: Nothing
|
||||
*
|
||||
* Lock Status: None held on entry
|
||||
*
|
||||
* Notes: Low level drivers may call this at any time and we will do
|
||||
* the right thing depending on whether or not the device is
|
||||
* currently active and whether or not it even has the
|
||||
* command blocks built yet.
|
||||
* Sets the device queue depth and returns the new value.
|
||||
*/
|
||||
void scsi_adjust_queue_depth(struct scsi_device *sdev, int tags)
|
||||
int scsi_change_queue_depth(struct scsi_device *sdev, int depth)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
/*
|
||||
* refuse to set tagged depth to an unworkable size
|
||||
*/
|
||||
if (tags <= 0)
|
||||
return;
|
||||
if (depth <= 0)
|
||||
goto out;
|
||||
|
||||
spin_lock_irqsave(sdev->request_queue->queue_lock, flags);
|
||||
|
||||
@ -780,15 +768,17 @@ void scsi_adjust_queue_depth(struct scsi_device *sdev, int tags)
|
||||
*/
|
||||
if (!shost_use_blk_mq(sdev->host) && !sdev->host->bqt) {
|
||||
if (blk_queue_tagged(sdev->request_queue) &&
|
||||
blk_queue_resize_tags(sdev->request_queue, tags) != 0)
|
||||
goto out;
|
||||
blk_queue_resize_tags(sdev->request_queue, depth) != 0)
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
sdev->queue_depth = tags;
|
||||
out:
|
||||
sdev->queue_depth = depth;
|
||||
out_unlock:
|
||||
spin_unlock_irqrestore(sdev->request_queue->queue_lock, flags);
|
||||
out:
|
||||
return sdev->queue_depth;
|
||||
}
|
||||
EXPORT_SYMBOL(scsi_adjust_queue_depth);
|
||||
EXPORT_SYMBOL(scsi_change_queue_depth);
|
||||
|
||||
/**
|
||||
* scsi_track_queue_full - track QUEUE_FULL events to adjust queue depth
|
||||
@ -833,12 +823,11 @@ int scsi_track_queue_full(struct scsi_device *sdev, int depth)
|
||||
if (sdev->last_queue_full_depth < 8) {
|
||||
/* Drop back to untagged */
|
||||
scsi_set_tag_type(sdev, 0);
|
||||
scsi_adjust_queue_depth(sdev, sdev->host->cmd_per_lun);
|
||||
scsi_change_queue_depth(sdev, sdev->host->cmd_per_lun);
|
||||
return -1;
|
||||
}
|
||||
|
||||
scsi_adjust_queue_depth(sdev, depth);
|
||||
return depth;
|
||||
return scsi_change_queue_depth(sdev, depth);
|
||||
}
|
||||
EXPORT_SYMBOL(scsi_track_queue_full);
|
||||
|
||||
|
@ -4469,7 +4469,7 @@ sdebug_queuecommand_lock_or_not(struct Scsi_Host *shost, struct scsi_cmnd *cmd)
|
||||
}
|
||||
|
||||
static int
|
||||
sdebug_change_qdepth(struct scsi_device *sdev, int qdepth, int reason)
|
||||
sdebug_change_qdepth(struct scsi_device *sdev, int qdepth)
|
||||
{
|
||||
int num_in_q = 0;
|
||||
unsigned long iflags;
|
||||
@ -4489,7 +4489,7 @@ sdebug_change_qdepth(struct scsi_device *sdev, int qdepth, int reason)
|
||||
/* allow to exceed max host queued_arr elements for testing */
|
||||
if (qdepth > SCSI_DEBUG_CANQUEUE + 10)
|
||||
qdepth = SCSI_DEBUG_CANQUEUE + 10;
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
scsi_change_queue_depth(sdev, qdepth);
|
||||
|
||||
if (SCSI_DEBUG_OPT_Q_NOISE & scsi_debug_opts) {
|
||||
sdev_printk(KERN_INFO, sdev,
|
||||
|
@ -632,7 +632,7 @@ static void scsi_handle_queue_ramp_up(struct scsi_device *sdev)
|
||||
tmp_sdev->queue_depth == sdev->max_queue_depth)
|
||||
continue;
|
||||
|
||||
scsi_adjust_queue_depth(tmp_sdev, tmp_sdev->queue_depth + 1);
|
||||
scsi_change_queue_depth(tmp_sdev, tmp_sdev->queue_depth + 1);
|
||||
sdev->last_queue_ramp_up = jiffies;
|
||||
}
|
||||
}
|
||||
|
@ -292,7 +292,7 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
|
||||
blk_queue_init_tags(sdev->request_queue,
|
||||
sdev->host->cmd_per_lun, shost->bqt);
|
||||
}
|
||||
scsi_adjust_queue_depth(sdev, sdev->host->cmd_per_lun);
|
||||
scsi_change_queue_depth(sdev, sdev->host->cmd_per_lun);
|
||||
|
||||
scsi_sysfs_device_initialize(sdev);
|
||||
|
||||
|
@ -880,8 +880,7 @@ sdev_store_queue_depth(struct device *dev, struct device_attribute *attr,
|
||||
if (depth < 1 || depth > sht->can_queue)
|
||||
return -EINVAL;
|
||||
|
||||
retval = sht->change_queue_depth(sdev, depth,
|
||||
SCSI_QDEPTH_DEFAULT);
|
||||
retval = sht->change_queue_depth(sdev, depth);
|
||||
if (retval < 0)
|
||||
return retval;
|
||||
|
||||
|
@ -1429,7 +1429,7 @@ static void storvsc_device_destroy(struct scsi_device *sdevice)
|
||||
|
||||
static int storvsc_device_configure(struct scsi_device *sdevice)
|
||||
{
|
||||
scsi_adjust_queue_depth(sdevice, STORVSC_MAX_IO_REQUESTS);
|
||||
scsi_change_queue_depth(sdevice, STORVSC_MAX_IO_REQUESTS);
|
||||
|
||||
blk_queue_max_segment_size(sdevice->request_queue, PAGE_SIZE);
|
||||
|
||||
|
@ -820,7 +820,7 @@ static int sym53c8xx_slave_configure(struct scsi_device *sdev)
|
||||
if (reqtags > SYM_CONF_MAX_TAG)
|
||||
reqtags = SYM_CONF_MAX_TAG;
|
||||
depth_to_use = reqtags ? reqtags : 1;
|
||||
scsi_adjust_queue_depth(sdev, depth_to_use);
|
||||
scsi_change_queue_depth(sdev, depth_to_use);
|
||||
lp->s.scdev_depth = depth_to_use;
|
||||
sym_tune_dev_queuing(tp, sdev->lun, reqtags);
|
||||
|
||||
|
@ -2194,7 +2194,7 @@ static int dc390_slave_configure(struct scsi_device *sdev)
|
||||
|
||||
if (sdev->tagged_supported && (dcb->DevMode & TAG_QUEUEING_)) {
|
||||
dcb->SyncMode |= EN_TAG_QUEUEING;
|
||||
scsi_adjust_queue_depth(sdev, acb->TagMaxNum);
|
||||
scsi_change_queue_depth(sdev, acb->TagMaxNum);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -696,25 +696,25 @@ static int u14_34f_slave_configure(struct scsi_device *dev) {
|
||||
if (TLDEV(dev->type) && dev->tagged_supported)
|
||||
|
||||
if (tag_mode == TAG_SIMPLE) {
|
||||
scsi_adjust_queue_depth(dev, tqd);
|
||||
scsi_change_queue_depth(dev, tqd);
|
||||
tag_suffix = ", simple tags";
|
||||
}
|
||||
else if (tag_mode == TAG_ORDERED) {
|
||||
scsi_adjust_queue_depth(dev, tqd);
|
||||
scsi_change_queue_depth(dev, tqd);
|
||||
tag_suffix = ", ordered tags";
|
||||
}
|
||||
else {
|
||||
scsi_adjust_queue_depth(dev, tqd);
|
||||
scsi_change_queue_depth(dev, tqd);
|
||||
tag_suffix = ", no tags";
|
||||
}
|
||||
|
||||
else if (TLDEV(dev->type) && linked_comm) {
|
||||
scsi_adjust_queue_depth(dev, tqd);
|
||||
scsi_change_queue_depth(dev, tqd);
|
||||
tag_suffix = ", untagged";
|
||||
}
|
||||
|
||||
else {
|
||||
scsi_adjust_queue_depth(dev, utqd);
|
||||
scsi_change_queue_depth(dev, utqd);
|
||||
tag_suffix = "";
|
||||
}
|
||||
|
||||
|
@ -2695,7 +2695,7 @@ static void ufshcd_set_queue_depth(struct scsi_device *sdev)
|
||||
|
||||
dev_dbg(hba->dev, "%s: activate tcq with queue depth %d\n",
|
||||
__func__, lun_qdepth);
|
||||
scsi_adjust_queue_depth(sdev, lun_qdepth);
|
||||
scsi_change_queue_depth(sdev, lun_qdepth);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2787,21 +2787,16 @@ static int ufshcd_slave_alloc(struct scsi_device *sdev)
|
||||
* ufshcd_change_queue_depth - change queue depth
|
||||
* @sdev: pointer to SCSI device
|
||||
* @depth: required depth to set
|
||||
* @reason: reason for changing the depth
|
||||
*
|
||||
* Change queue depth according to the reason and make sure
|
||||
* the max. limits are not crossed.
|
||||
* Change queue depth and make sure the max. limits are not crossed.
|
||||
*/
|
||||
static int ufshcd_change_queue_depth(struct scsi_device *sdev,
|
||||
int depth, int reason)
|
||||
static int ufshcd_change_queue_depth(struct scsi_device *sdev, int depth)
|
||||
{
|
||||
struct ufs_hba *hba = shost_priv(sdev->host);
|
||||
|
||||
if (depth > hba->nutrs)
|
||||
depth = hba->nutrs;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, depth);
|
||||
return depth;
|
||||
return scsi_change_queue_depth(sdev, depth);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -682,17 +682,13 @@ static int virtscsi_device_reset(struct scsi_cmnd *sc)
|
||||
* virtscsi_change_queue_depth() - Change a virtscsi target's queue depth
|
||||
* @sdev: Virtscsi target whose queue depth to change
|
||||
* @qdepth: New queue depth
|
||||
* @reason: Reason for the queue depth change.
|
||||
*/
|
||||
static int virtscsi_change_queue_depth(struct scsi_device *sdev,
|
||||
int qdepth,
|
||||
int reason)
|
||||
static int virtscsi_change_queue_depth(struct scsi_device *sdev, int qdepth)
|
||||
{
|
||||
struct Scsi_Host *shost = sdev->host;
|
||||
int max_depth = shost->cmd_per_lun;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, min(max_depth, qdepth));
|
||||
return sdev->queue_depth;
|
||||
return scsi_change_queue_depth(sdev, min(max_depth, qdepth));
|
||||
}
|
||||
|
||||
static int virtscsi_abort(struct scsi_cmnd *sc)
|
||||
|
@ -504,19 +504,11 @@ static void pvscsi_setup_all_rings(const struct pvscsi_adapter *adapter)
|
||||
}
|
||||
}
|
||||
|
||||
static int pvscsi_change_queue_depth(struct scsi_device *sdev,
|
||||
int qdepth,
|
||||
int reason)
|
||||
static int pvscsi_change_queue_depth(struct scsi_device *sdev, int qdepth)
|
||||
{
|
||||
if (reason != SCSI_QDEPTH_DEFAULT)
|
||||
/*
|
||||
* We support only changing default.
|
||||
*/
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (!sdev->tagged_supported)
|
||||
qdepth = 1;
|
||||
scsi_adjust_queue_depth(sdev, qdepth);
|
||||
scsi_change_queue_depth(sdev, qdepth);
|
||||
|
||||
if (sdev->inquiry_len > 7)
|
||||
sdev_printk(KERN_INFO, sdev,
|
||||
|
@ -1653,7 +1653,6 @@ static struct scsi_host_template driver_template = {
|
||||
.can_queue = WD7000_Q,
|
||||
.this_id = 7,
|
||||
.sg_tablesize = WD7000_SG,
|
||||
.cmd_per_lun = 1,
|
||||
.unchecked_isa_dma = 1,
|
||||
.use_clustering = ENABLE_CLUSTERING,
|
||||
};
|
||||
|
@ -110,19 +110,6 @@ static struct device_driver tcm_loop_driverfs = {
|
||||
*/
|
||||
struct device *tcm_loop_primary;
|
||||
|
||||
/*
|
||||
* Copied from drivers/scsi/libfc/fc_fcp.c:fc_change_queue_depth() and
|
||||
* drivers/scsi/libiscsi.c:iscsi_change_queue_depth()
|
||||
*/
|
||||
static int tcm_loop_change_queue_depth(
|
||||
struct scsi_device *sdev,
|
||||
int depth,
|
||||
int reason)
|
||||
{
|
||||
scsi_adjust_queue_depth(sdev, depth);
|
||||
return sdev->queue_depth;
|
||||
}
|
||||
|
||||
static void tcm_loop_submission_work(struct work_struct *work)
|
||||
{
|
||||
struct tcm_loop_cmd *tl_cmd =
|
||||
@ -397,7 +384,7 @@ static struct scsi_host_template tcm_loop_driver_template = {
|
||||
.proc_name = "tcm_loopback",
|
||||
.name = "TCM_Loopback",
|
||||
.queuecommand = tcm_loop_queuecommand,
|
||||
.change_queue_depth = tcm_loop_change_queue_depth,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
.change_queue_type = scsi_change_queue_type,
|
||||
.eh_abort_handler = tcm_loop_abort_task,
|
||||
.eh_device_reset_handler = tcm_loop_device_reset,
|
||||
|
@ -799,7 +799,7 @@ static int uas_slave_configure(struct scsi_device *sdev)
|
||||
if (devinfo->flags & US_FL_NO_REPORT_OPCODES)
|
||||
sdev->no_report_opcodes = 1;
|
||||
|
||||
scsi_adjust_queue_depth(sdev, devinfo->qdepth - 2);
|
||||
scsi_change_queue_depth(sdev, devinfo->qdepth - 2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1191,9 +1191,9 @@ extern void ata_scsi_unlock_native_capacity(struct scsi_device *sdev);
|
||||
extern int ata_scsi_slave_config(struct scsi_device *sdev);
|
||||
extern void ata_scsi_slave_destroy(struct scsi_device *sdev);
|
||||
extern int ata_scsi_change_queue_depth(struct scsi_device *sdev,
|
||||
int queue_depth, int reason);
|
||||
int queue_depth);
|
||||
extern int __ata_change_queue_depth(struct ata_port *ap, struct scsi_device *sdev,
|
||||
int queue_depth, int reason);
|
||||
int queue_depth);
|
||||
extern struct ata_device *ata_dev_pair(struct ata_device *adev);
|
||||
extern int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev);
|
||||
extern void ata_scsi_port_error_handler(struct Scsi_Host *host, struct ata_port *ap);
|
||||
|
@ -1105,7 +1105,6 @@ int fc_eh_abort(struct scsi_cmnd *);
|
||||
int fc_eh_device_reset(struct scsi_cmnd *);
|
||||
int fc_eh_host_reset(struct scsi_cmnd *);
|
||||
int fc_slave_alloc(struct scsi_device *);
|
||||
int fc_change_queue_depth(struct scsi_device *, int qdepth, int reason);
|
||||
|
||||
/*
|
||||
* ELS/CT interface
|
||||
|
@ -378,8 +378,6 @@ struct iscsi_host {
|
||||
/*
|
||||
* scsi host template
|
||||
*/
|
||||
extern int iscsi_change_queue_depth(struct scsi_device *sdev, int depth,
|
||||
int reason);
|
||||
extern int iscsi_eh_abort(struct scsi_cmnd *sc);
|
||||
extern int iscsi_eh_recover_target(struct scsi_cmnd *sc);
|
||||
extern int iscsi_eh_session_reset(struct scsi_cmnd *sc);
|
||||
|
@ -704,8 +704,7 @@ int sas_queue_up(struct sas_task *task);
|
||||
extern int sas_queuecommand(struct Scsi_Host * ,struct scsi_cmnd *);
|
||||
extern int sas_target_alloc(struct scsi_target *);
|
||||
extern int sas_slave_configure(struct scsi_device *);
|
||||
extern int sas_change_queue_depth(struct scsi_device *, int new_depth,
|
||||
int reason);
|
||||
extern int sas_change_queue_depth(struct scsi_device *, int new_depth);
|
||||
extern int sas_change_queue_type(struct scsi_device *, int qt);
|
||||
extern int sas_bios_param(struct scsi_device *,
|
||||
struct block_device *,
|
||||
|
@ -380,7 +380,7 @@ extern struct scsi_device *__scsi_iterate_devices(struct Scsi_Host *,
|
||||
#define __shost_for_each_device(sdev, shost) \
|
||||
list_for_each_entry((sdev), &((shost)->__devices), siblings)
|
||||
|
||||
extern void scsi_adjust_queue_depth(struct scsi_device *, int);
|
||||
extern int scsi_change_queue_depth(struct scsi_device *, int);
|
||||
extern int scsi_track_queue_full(struct scsi_device *, int);
|
||||
|
||||
extern int scsi_set_medium_removal(struct scsi_device *, char);
|
||||
|
@ -46,10 +46,6 @@ struct blk_queue_tags;
|
||||
#define DISABLE_CLUSTERING 0
|
||||
#define ENABLE_CLUSTERING 1
|
||||
|
||||
enum {
|
||||
SCSI_QDEPTH_DEFAULT, /* default requested change, e.g. from sysfs */
|
||||
};
|
||||
|
||||
struct scsi_host_template {
|
||||
struct module *module;
|
||||
const char *name;
|
||||
@ -193,7 +189,7 @@ struct scsi_host_template {
|
||||
* Things currently recommended to be handled at this time include:
|
||||
*
|
||||
* 1. Setting the device queue depth. Proper setting of this is
|
||||
* described in the comments for scsi_adjust_queue_depth.
|
||||
* described in the comments for scsi_change_queue_depth.
|
||||
* 2. Determining if the device supports the various synchronous
|
||||
* negotiation protocols. The device struct will already have
|
||||
* responded to INQUIRY and the results of the standard items
|
||||
@ -279,7 +275,7 @@ struct scsi_host_template {
|
||||
*
|
||||
* Status: OPTIONAL
|
||||
*/
|
||||
int (* change_queue_depth)(struct scsi_device *, int, int);
|
||||
int (* change_queue_depth)(struct scsi_device *, int);
|
||||
|
||||
/*
|
||||
* Fill in this function to allow the changing of tag types
|
||||
|
Loading…
Reference in New Issue
Block a user