Patch "ibmvscsis: Fix the incorrect req_lim_delta" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
ibmvscsis: Fix the incorrect req_lim_delta
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ibmvscsis-fix-the-incorrect-req_lim_delta.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
75dbf2d36f6b122ad3c1070fe4bf95f71bbff321Mon Sep 17 00:00:00 2001
From: "Bryant G. Ly" <[email protected]>
Date: Wed, 10 May 2017 14:35:47 -0500
Subject: ibmvscsis: Fix the incorrect req_lim_delta
From: Bryant G. Ly <[email protected]>
commit 75dbf2d36f6b122ad3c1070fe4bf95f71bbff321 upstream.
The current code is not correctly calculating the req_lim_delta.
We want to make sure vscsi->credit is always incremented when we do not send a response for the scsi op. Thus for the case where there is a successfully aborted task we need to make sure the vscsi->credit is incremented.
v2 - Moves the original location of the vscsi->credit increment to a better spot. Since if we increment credit, the next command we send back will have increased req_lim_delta. But we probably shouldn't be doing that until the aborted cmd is actually released. Otherwise the client will think that it can send a new command, and we could find ourselves short of command elements. Not likely, but could happen.
This patch depends on both:
commit 25e78531268e ("ibmvscsis: Do not send aborted task response") commit 98883f1b5415 ("ibmvscsis: Clear left-over abort_cmd pointers")
--- drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-)
drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c +20 -4
@@ -1790,6 +1790,25 @@ static void ibmvscsis_send_messages(strulist_del (&cmd->list);ibmvscsis_free_cmd_resources (vscsi, cmd); +/* +* With a successfully aborted op +* through LIO we want to increment the +* the vscsi credit so that when we dont +* send a rsp to the original scsi abort +* op (h_send_crq), but the tm rsp to +* the abort is sent, the credit is +* correctly sent with the abort tm rsp. +* We would need 1 for the abort tm rsp +* and 1 credit for the aborted scsi op. +* Thus we need to increment here. +* Also we want to increment the credit +* here because we want to make sure +* cmd is actually released first +* otherwise the client will think it +* it can send a new cmd, and we could +* find ourselves short of cmd elements. +*/ + vscsi->credit +=1 ; }else { iue = cmd->iue;
@@ -2964,10 +2983,7 @@ static long srp_build_response(struct sc rsp->opcode =SRP_RSP ; -if (vscsi->credit >0 && vscsi->state ==SRP_PROCESSING ) - rsp->req_lim_delta =cpu_to_be32 (vscsi->credit); -else - rsp->req_lim_delta =cpu_to_be32 (1 + vscsi->credit); + rsp->req_lim_delta =cpu_to_be32 (1 + vscsi->credit); rsp->tag = cmd->rsp.tag; rsp->flags =0 ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/ibmvscsis-fix-the-incorrect-req_lim_delta.patch queue-4.9/ibmvscsis-clear-left-over-abort_cmd-pointers.patch