• Andy Grover's avatar
    target/user: Recalculate pad size inside is_ring_space_avail() · f56574a2
    Andy Grover authored
    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: default avatarAndy Grover <agrover@redhat.com>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    f56574a2
target_core_user.c 28.5 KB