target: Remove __transport_execute_tasks() for each processing context
authorNicholas Bellinger <nab@linux-iscsi.org>
Thu, 1 Dec 2011 02:21:24 +0000 (18:21 -0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Wed, 14 Dec 2011 11:50:12 +0000 (11:50 +0000)
commitbeb55a0cc15a43be43a646b588fcf83822f0c44f
tree4ad60fa940e13870449e70341b036e5eaa22c01c
parent4d2300ccffd22d1d0213b6a8e4d685eb6ca069c0
target: Remove __transport_execute_tasks() for each processing context

This patch removes the original usage of __transport_execute_tasks() ahead
of every transport_get_cmd_from_queue() call in transport_processing_thread().
This helps reduce se_device->execute_task_lock contention between qla2xxx wq
with target_submit_cmd() for READs and transport_processing_thread()
context servicing WRITEs with full payloads for I/O submission.

It also adds a __transport_execute_tasks() to kick the task queue again
without a *se_cmd descriptor with existing queue full logic, but this may
end up not being necessary.

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>
drivers/target/target_core_transport.c