On 4/21/22 4:40 AM, Juergen Gross wrote:
On 20.04.22 18:12, Boris Ostrovsky wrote:
On 4/20/22 5:25 AM, Juergen Gross wrote:
@@ -569,7 +645,7 @@ static void scsiback_device_action(struct vscsibk_pend *pending_req,
wait_for_completion(&pending_req->tmr_done);
err = (se_cmd->se_tmr_req->response == TMR_FUNCTION_COMPLETE) ?
- SUCCESS : FAILED;
+ XEN_VSCSIIF_RSLT_RESET_SUCCESS : XEN_VSCSIIF_RSLT_RESET_FAILED;
scsiback_do_resp_with_sense(NULL, err, 0, pending_req);
transport_generic_free_cmd(&pending_req->se_cmd, 0);
You also want to initialize err to XEN_VSCSIIF_RSLT_RESET_FAILED.
I did that.
Yes you did. I don't know what I was was looking at.
And also looking at invocations of scsiback_do_resp_with_sense() I think those may need to be adjusted as well.
No, the invocations are fine, but scsiback_result() needs to pass through
the lowest 16 bits instead of only the lowest 8 bits of the result value.
What I was thinking was that this could use the reverse of XEN_VSCSIIF_RSLT_HOST(), i.e. something like
#define RSLT_HOST_TO_XEN_VSCSIIF(x) ((x)<<16)
to be explicit about namespaces.
BTW, should scsiback_result() use XEN_VSCSIIF_RSLT_HOST() at the top?
-boris