diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2009-10-15 20:46:39 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-12-04 13:00:41 -0500 |
commit | e881a172dac4d9ea3b2a1540041d872963c269bd (patch) | |
tree | 9eb1f344b107806c0041c4e0a64192a055117289 /drivers/ata | |
parent | dbf9bfe615717d1145f263c0049fe2328e6ed395 (diff) |
[SCSI] modify change_queue_depth to take in reason why it is being called
This patch modifies scsi_host_template->change_queue_depth so that
it takes an argument indicating why it is being called. This will be
used so that if a LLD needs to do some extra processing when
handling queue fulls or later ramp ups, it can do so.
This is a simple port of the drivers setting a change_queue_depth
callback. In the patch I just have these LLDs adjust the queue depth
if the user was requesting it.
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
[Vasu.Dev: v2
Also converted pmcraid_change_queue_depth and then verified
all modules compile using "make allmodconfig" for any new build
warnings on X86_64.
Updated original description after combing two original
patches from Mike to make this patch git bisectable.]
Signed-off-by: Vasu Dev <vasu.dev@intel.com>
[jejb: fixed up 53c700]
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/ata')
-rw-r--r-- | drivers/ata/libata-scsi.c | 7 | ||||
-rw-r--r-- | drivers/ata/sata_nv.c | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index b4ee28dec521..5d52c2fcd076 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c | |||
@@ -1208,6 +1208,7 @@ void ata_scsi_slave_destroy(struct scsi_device *sdev) | |||
1208 | * ata_scsi_change_queue_depth - SCSI callback for queue depth config | 1208 | * ata_scsi_change_queue_depth - SCSI callback for queue depth config |
1209 | * @sdev: SCSI device to configure queue depth for | 1209 | * @sdev: SCSI device to configure queue depth for |
1210 | * @queue_depth: new queue depth | 1210 | * @queue_depth: new queue depth |
1211 | * @reason: calling context | ||
1211 | * | 1212 | * |
1212 | * This is libata standard hostt->change_queue_depth callback. | 1213 | * This is libata standard hostt->change_queue_depth callback. |
1213 | * SCSI will call into this callback when user tries to set queue | 1214 | * SCSI will call into this callback when user tries to set queue |
@@ -1219,12 +1220,16 @@ void ata_scsi_slave_destroy(struct scsi_device *sdev) | |||
1219 | * RETURNS: | 1220 | * RETURNS: |
1220 | * Newly configured queue depth. | 1221 | * Newly configured queue depth. |
1221 | */ | 1222 | */ |
1222 | int ata_scsi_change_queue_depth(struct scsi_device *sdev, int queue_depth) | 1223 | int ata_scsi_change_queue_depth(struct scsi_device *sdev, int queue_depth, |
1224 | int reason) | ||
1223 | { | 1225 | { |
1224 | struct ata_port *ap = ata_shost_to_port(sdev->host); | 1226 | struct ata_port *ap = ata_shost_to_port(sdev->host); |
1225 | struct ata_device *dev; | 1227 | struct ata_device *dev; |
1226 | unsigned long flags; | 1228 | unsigned long flags; |
1227 | 1229 | ||
1230 | if (reason != SCSI_QDEPTH_DEFAULT) | ||
1231 | return -EOPNOTSUPP; | ||
1232 | |||
1228 | if (queue_depth < 1 || queue_depth == sdev->queue_depth) | 1233 | if (queue_depth < 1 || queue_depth == sdev->queue_depth) |
1229 | return sdev->queue_depth; | 1234 | return sdev->queue_depth; |
1230 | 1235 | ||
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c index 1eb4e020eb5c..0c82d335c55d 100644 --- a/drivers/ata/sata_nv.c +++ b/drivers/ata/sata_nv.c | |||
@@ -1975,7 +1975,7 @@ static int nv_swncq_slave_config(struct scsi_device *sdev) | |||
1975 | ata_id_c_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num)); | 1975 | ata_id_c_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num)); |
1976 | 1976 | ||
1977 | if (strncmp(model_num, "Maxtor", 6) == 0) { | 1977 | if (strncmp(model_num, "Maxtor", 6) == 0) { |
1978 | ata_scsi_change_queue_depth(sdev, 1); | 1978 | ata_scsi_change_queue_depth(sdev, 1, SCSI_QDEPTH_DEFAULT); |
1979 | ata_dev_printk(dev, KERN_NOTICE, | 1979 | ata_dev_printk(dev, KERN_NOTICE, |
1980 | "Disabling SWNCQ mode (depth %x)\n", sdev->queue_depth); | 1980 | "Disabling SWNCQ mode (depth %x)\n", sdev->queue_depth); |
1981 | } | 1981 | } |