Commit d3692a3d authored by Hannes Reinecke's avatar Hannes Reinecke Committed by Martin K. Petersen

scsi_dh_alua: sanitze sense code handling

The only check for a valid sense code is calling scsi_normalize_sense()
and check the return value. So drop the pointless checks and rely on
scsi_normalize_sense() to figure out if the sense code is valid.
With that we can also remove the 'senselen' field.
Signed-off-by: default avatarHannes Reinecke <hare@suse.de>
Reviewed-by: default avatarJohannes Thumshirn <jthumshirn@suse.com>
Reviewed-by: default avatarBart van Assche <bvanassche@sandisk.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 6cc05d45
...@@ -73,7 +73,6 @@ struct alua_dh_data { ...@@ -73,7 +73,6 @@ struct alua_dh_data {
int bufflen; int bufflen;
unsigned char transition_tmo; unsigned char transition_tmo;
unsigned char sense[SCSI_SENSE_BUFFERSIZE]; unsigned char sense[SCSI_SENSE_BUFFERSIZE];
int senselen;
struct scsi_device *sdev; struct scsi_device *sdev;
activate_complete callback_fn; activate_complete callback_fn;
void *callback_data; void *callback_data;
...@@ -158,14 +157,13 @@ static unsigned submit_rtpg(struct scsi_device *sdev, struct alua_dh_data *h, ...@@ -158,14 +157,13 @@ static unsigned submit_rtpg(struct scsi_device *sdev, struct alua_dh_data *h,
rq->sense = h->sense; rq->sense = h->sense;
memset(rq->sense, 0, SCSI_SENSE_BUFFERSIZE); memset(rq->sense, 0, SCSI_SENSE_BUFFERSIZE);
rq->sense_len = h->senselen = 0; rq->sense_len = 0;
err = blk_execute_rq(rq->q, NULL, rq, 1); err = blk_execute_rq(rq->q, NULL, rq, 1);
if (err == -EIO) { if (err == -EIO) {
sdev_printk(KERN_INFO, sdev, sdev_printk(KERN_INFO, sdev,
"%s: rtpg failed with %x\n", "%s: rtpg failed with %x\n",
ALUA_DH_NAME, rq->errors); ALUA_DH_NAME, rq->errors);
h->senselen = rq->sense_len;
err = SCSI_DH_IO; err = SCSI_DH_IO;
} }
blk_put_request(rq); blk_put_request(rq);
...@@ -194,9 +192,8 @@ static void stpg_endio(struct request *req, int error) ...@@ -194,9 +192,8 @@ static void stpg_endio(struct request *req, int error)
goto done; goto done;
} }
if (req->sense_len > 0) { if (scsi_normalize_sense(h->sense, SCSI_SENSE_BUFFERSIZE,
err = scsi_normalize_sense(h->sense, SCSI_SENSE_BUFFERSIZE, &sense_hdr)) {
&sense_hdr);
if (!err) { if (!err) {
err = SCSI_DH_IO; err = SCSI_DH_IO;
goto done; goto done;
...@@ -265,7 +262,7 @@ static unsigned submit_stpg(struct alua_dh_data *h) ...@@ -265,7 +262,7 @@ static unsigned submit_stpg(struct alua_dh_data *h)
rq->sense = h->sense; rq->sense = h->sense;
memset(rq->sense, 0, SCSI_SENSE_BUFFERSIZE); memset(rq->sense, 0, SCSI_SENSE_BUFFERSIZE);
rq->sense_len = h->senselen = 0; rq->sense_len = 0;
rq->end_io_data = h; rq->end_io_data = h;
blk_execute_rq_nowait(rq->q, NULL, rq, 1, stpg_endio); blk_execute_rq_nowait(rq->q, NULL, rq, 1, stpg_endio);
...@@ -514,10 +511,9 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_dh_data *h, int wait_ ...@@ -514,10 +511,9 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_dh_data *h, int wait_
retry: retry:
err = submit_rtpg(sdev, h, rtpg_ext_hdr_req); err = submit_rtpg(sdev, h, rtpg_ext_hdr_req);
if (err == SCSI_DH_IO && h->senselen > 0) { if (err == SCSI_DH_IO) {
err = scsi_normalize_sense(h->sense, SCSI_SENSE_BUFFERSIZE, if (!scsi_normalize_sense(h->sense, SCSI_SENSE_BUFFERSIZE,
&sense_hdr); &sense_hdr))
if (!err)
return SCSI_DH_IO; return SCSI_DH_IO;
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment