diff options
author | Mike Christie <mchristi@redhat.com> | 2017-11-28 12:40:39 -0600 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2018-01-12 15:07:19 -0800 |
commit | af1dd7ff46824a94da1d90443bd07db2796bd545 (patch) | |
tree | 8738bc72ba01cad344c8917ba86472d0a3c2b09a /crypto/khazad.c | |
parent | f890f5799a6628fe006ae524e625900186074cdb (diff) |
tcmu: don't block submitting context for block waits
This patch has tcmu internally queue cmds if its ring buffer
is full. It also makes the TCMU_GLOBAL_MAX_BLOCKS limit a
hint instead of a hard limit, so we do not have to add any
new locks/atomics in the main IO path except when IO is not
running.
This fixes the following bugs:
1. We cannot sleep from the submitting context because it might be
called from a target recv context. This results in transport level
commands timing out. For example if the ring is full, we would
sleep, and a iscsi initiator would send a iscsi ping/nop which
times out because the target's recv thread is sleeping here.
2. Devices were not fairly scheduled to run when they hit the global
limit so they could time out waiting for ring space while others
got run.
Signed-off-by: Mike Christie <mchristi@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'crypto/khazad.c')
0 files changed, 0 insertions, 0 deletions