diff options
author | Nicholas Bellinger <nab@linux-iscsi.org> | 2011-11-30 04:25:21 -0500 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2011-12-14 06:42:13 -0500 |
commit | 65586d51e0986be574118286c3d0007e903a2add (patch) | |
tree | 0684f76d53e666ffe2a2c77f8e3947d263fa1b75 /drivers/target/target_core_device.c | |
parent | 40be67f4c588fe2f3e2dbd60ae1f470abc5b6ad8 (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.c | 7 |
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 | */ |
1133 | int se_dev_set_queue_depth(struct se_device *dev, u32 queue_depth) | 1133 | int 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; |