Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c40ecc12 authored by Christoph Hellwig's avatar Christoph Hellwig
Browse files

scsi: avoid ->change_queue_depth indirection for queue full tracking



All drivers use the implementation for ramping the queue up and down, so
instead of overloading the change_queue_depth method call the
implementation diretly if the driver opts into it by setting the
track_queue_depth flag in the host template.

Note that a few drivers validated the new queue depth in their
change_queue_depth method, but as we never go over the queue depth
set during slave_configure or the sysfs file this isn't nessecary
and can safely be removed.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarMike Christie <michaelc@cs.wisc.edu>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Reviewed-by: default avatarVenkatesh Srinivas <venkateshs@google.com>
parent 89dac7bb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -922,6 +922,7 @@ static struct scsi_host_template iscsi_iser_sht = {
	.use_clustering         = DISABLE_CLUSTERING,
	.proc_name              = "iscsi_iser",
	.this_id                = -1,
	.track_queue_depth	= 1,
};

static struct iscsi_transport iscsi_iser_transport = {
+8 −12
Original line number Diff line number Diff line
@@ -2402,7 +2402,7 @@ 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/SCSI_QDEPTH_QFULL/SCSI_QDEPTH_RAMP_UP
 * @reason: SCSI_QDEPTH_DEFAULT
 * (see include/scsi/scsi_host.h for definition)
 *
 * Returns queue depth.
@@ -2412,18 +2412,13 @@ srp_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
{
	struct Scsi_Host *shost = sdev->host;
	int max_depth;
	if (reason == SCSI_QDEPTH_DEFAULT || reason == SCSI_QDEPTH_RAMP_UP) {

	max_depth = shost->can_queue;
	if (!sdev->tagged_supported)
		max_depth = 1;
	if (qdepth > max_depth)
		qdepth = max_depth;
	scsi_adjust_queue_depth(sdev, qdepth);
	} else if (reason == SCSI_QDEPTH_QFULL)
		scsi_track_queue_full(sdev, qdepth);
	else
		return -EOPNOTSUPP;

	return sdev->queue_depth;
}

@@ -2766,6 +2761,7 @@ static struct scsi_host_template srp_template = {
	.use_clustering			= ENABLE_CLUSTERING,
	.shost_attrs			= srp_host_attrs,
	.use_blk_tags			= 1,
	.track_queue_depth		= 1,
};

static int srp_sdev_count(struct Scsi_Host *host)
+2 −13
Original line number Diff line number Diff line
@@ -35,19 +35,7 @@ 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)
{
	switch (reason) {
	case SCSI_QDEPTH_DEFAULT:
	scsi_adjust_queue_depth(sdev, depth);
		break;
	case SCSI_QDEPTH_QFULL:
		scsi_track_queue_full(sdev, depth);
		break;
	case SCSI_QDEPTH_RAMP_UP:
		scsi_adjust_queue_depth(sdev, depth);
		break;
	default:
		return -EOPNOTSUPP;
	}
	return sdev->queue_depth;
}

@@ -320,6 +308,7 @@ static struct scsi_host_template zfcp_scsi_host_template = {
	.use_clustering		 = 1,
	.shost_attrs		 = zfcp_sysfs_shost_attrs,
	.sdev_attrs		 = zfcp_sysfs_sdev_attrs,
	.track_queue_depth	 = 1,
};

/**
+1 −0
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ static struct scsi_host_template aic94xx_sht = {
	.target_destroy		= sas_target_destroy,
	.ioctl			= sas_ioctl,
	.use_blk_tags		= 1,
	.track_queue_depth	= 1,
};

static int asd_map_memio(struct asd_ha_struct *asd_ha)
+1 −1
Original line number Diff line number Diff line
@@ -570,7 +570,7 @@ static struct scsi_host_template beiscsi_sht = {
	.cmd_per_lun = BEISCSI_CMD_PER_LUN,
	.use_clustering = ENABLE_CLUSTERING,
	.vendor_id = SCSI_NL_VID_TYPE_PCI | BE_VENDOR_ID,

	.track_queue_depth = 1,
};

static struct scsi_transport_template *beiscsi_scsi_transport;
Loading