aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/target/target_core_device.c
diff options
context:
space:
mode:
authorNicholas Bellinger <nab@linux-iscsi.org>2011-11-30 04:25:21 -0500
committerNicholas Bellinger <nab@linux-iscsi.org>2011-12-14 06:42:13 -0500
commit65586d51e0986be574118286c3d0007e903a2add (patch)
tree0684f76d53e666ffe2a2c77f8e3947d263fa1b75 /drivers/target/target_core_device.c
parent40be67f4c588fe2f3e2dbd60ae1f470abc5b6ad8 (diff)
target: Drop se_device TCQ queue_depth usage from I/O path
Historically, pSCSI devices have been the ones that required target-core to enforce a per se_device->depth_left. This patch changes target-core to no longer (by default) enforce a per se_device->depth_left or sleep in transport_tcq_window_closed() when we out of queue slots for all backend export cases. Cc: Christoph Hellwig <hch@lst.de> Cc: Roland Dreier <roland@purestorage.com> Cc: Joern Engel <joern@logfs.org> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target/target_core_device.c')
-rw-r--r--drivers/target/target_core_device.c7
1 files changed, 0 insertions, 7 deletions
diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
index 1f74de25a92f..0c5992f0d946 100644
--- a/drivers/target/target_core_device.c
+++ b/drivers/target/target_core_device.c
@@ -1132,8 +1132,6 @@ int se_dev_set_emulate_rest_reord(struct se_device *dev, int flag)
1132 */ 1132 */
1133int se_dev_set_queue_depth(struct se_device *dev, u32 queue_depth) 1133int se_dev_set_queue_depth(struct se_device *dev, u32 queue_depth)
1134{ 1134{
1135 u32 orig_queue_depth = dev->queue_depth;
1136
1137 if (atomic_read(&dev->dev_export_obj.obj_access_count)) { 1135 if (atomic_read(&dev->dev_export_obj.obj_access_count)) {
1138 pr_err("dev[%p]: Unable to change SE Device TCQ while" 1136 pr_err("dev[%p]: Unable to change SE Device TCQ while"
1139 " dev_export_obj: %d count exists\n", dev, 1137 " dev_export_obj: %d count exists\n", dev,
@@ -1167,11 +1165,6 @@ int se_dev_set_queue_depth(struct se_device *dev, u32 queue_depth)
1167 } 1165 }
1168 1166
1169 dev->se_sub_dev->se_dev_attrib.queue_depth = dev->queue_depth = queue_depth; 1167 dev->se_sub_dev->se_dev_attrib.queue_depth = dev->queue_depth = queue_depth;
1170 if (queue_depth > orig_queue_depth)
1171 atomic_add(queue_depth - orig_queue_depth, &dev->depth_left);
1172 else if (queue_depth < orig_queue_depth)
1173 atomic_sub(orig_queue_depth - queue_depth, &dev->depth_left);
1174
1175 pr_debug("dev[%p]: SE Device TCQ Depth changed to: %u\n", 1168 pr_debug("dev[%p]: SE Device TCQ Depth changed to: %u\n",
1176 dev, queue_depth); 1169 dev, queue_depth);
1177 return 0; 1170 return 0;