Message ID | 20170628055900.22889-4-damien.lemoal@wdc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
(Adding MNC CC') On Wed, 2017-06-28 at 14:58 +0900, Damien Le Moal wrote: > On completion of a request sent to the target backstore device, > pscsi_req_done() calls target_complete_cmd() which in turn will execute > pscsi_transport_complete(). In case of a failed request, this last > function will copy the target request sense data to the initiator side > request sense data. However, in pscsi_req_done(), the sense data is > retreived from the request after calling target_complete_cmd(), which > result in the sense data always conatining zeroes. Simply fix this by > copying the sense data before calling target_complete_cmd(). > > Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com> > --- > drivers/target/target_core_pscsi.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > As per MNC, skipping this patch as the following has been applied that makes pscsi_complete_cmd() use the new transport_copy_sense_to_cmd() helper. https://www.spinics.net/lists/target-devel/msg15433.html Please let me know if you run into any issues. -- To unsubscribe from this list: send the line "unsubscribe target-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/target/target_core_pscsi.c b/drivers/target/target_core_pscsi.c index 97d0318..959d9f6 100644 --- a/drivers/target/target_core_pscsi.c +++ b/drivers/target/target_core_pscsi.c @@ -1065,6 +1065,8 @@ static void pscsi_req_done(struct request *req, int uptodate) pt->pscsi_result); } + memcpy(pt->pscsi_sense, scsi_req(req)->sense, TRANSPORT_SENSE_BUFFER); + switch (host_byte(pt->pscsi_result)) { case DID_OK: target_complete_cmd(cmd, cmd->scsi_status); @@ -1077,7 +1079,6 @@ static void pscsi_req_done(struct request *req, int uptodate) break; } - memcpy(pt->pscsi_sense, scsi_req(req)->sense, TRANSPORT_SENSE_BUFFER); __blk_put_request(req->q, req); kfree(pt); }
On completion of a request sent to the target backstore device, pscsi_req_done() calls target_complete_cmd() which in turn will execute pscsi_transport_complete(). In case of a failed request, this last function will copy the target request sense data to the initiator side request sense data. However, in pscsi_req_done(), the sense data is retreived from the request after calling target_complete_cmd(), which result in the sense data always conatining zeroes. Simply fix this by copying the sense data before calling target_complete_cmd(). Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com> --- drivers/target/target_core_pscsi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)