diff options
author | Andy Grover <agrover@redhat.com> | 2014-10-02 19:23:15 +0200 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2014-10-03 20:16:12 +0200 |
commit | f56574a2b554492703030e3d3b9679c9a07a5d69 (patch) | |
tree | 3a5f48487de06e02ab8d30ced77bd5f9ef1e0a87 /drivers/scsi/qla2xxx | |
parent | tcm_loop: Fixup tag handling (diff) | |
download | linux-f56574a2b554492703030e3d3b9679c9a07a5d69.tar.xz linux-f56574a2b554492703030e3d3b9679c9a07a5d69.zip |
target/user: Recalculate pad size inside is_ring_space_avail()
If more than one thread is waiting for command ring space that includes
a PAD, then if the first one finishes (inserts a PAD and a CMD at the
start of the cmd ring) then the second one will incorrectly think it still
needs to insert a PAD (i.e. cmdr_space_needed is now wrong.) This will
lead to it asking for more space than it actually needs, and then inserting
a PAD somewhere else than at the end -- not what we want.
This patch moves the pad calculation inside is_ring_space_available() so
in the above scenario the second thread would then ask for space not
including a PAD. The patch also inserts a PAD op based upon an up-to-date
cmd_head, instead of the potentially stale value.
Signed-off-by: Andy Grover <agrover@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/scsi/qla2xxx')
0 files changed, 0 insertions, 0 deletions