Some drives set the ILI flag together with MEDIUM ERROR
sense code. Clear the ILI flag in this case so that the
medium error will be handled. The problem was reported by
Maurizio Lombardi.

Signed-off-by: Kai Mäkisara <kai.makis...@kolumbus.fi>
---
 drivers/scsi/st.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

--- a/drivers/scsi/st.c 2016-04-17 21:22:15.671897001 +0300
+++ b/drivers/scsi/st.c 2016-04-17 22:25:39.234321293 +0300
@@ -1974,9 +1974,12 @@ static long read_tape(struct scsi_tape *
                                        transfer = (int)cmdstatp->uremainder64;
                                else
                                        transfer = 0;
-                               if (STp->block_size == 0 &&
-                                   cmdstatp->sense_hdr.sense_key == 
MEDIUM_ERROR)
-                                       transfer = bytes;
+                               if (cmdstatp->sense_hdr.sense_key == 
MEDIUM_ERROR) {
+                                       if (STp->block_size == 0)
+                                               transfer = bytes;
+                                       /* Some drives set ILI with MEDIUM 
ERROR */
+                                       cmdstatp->flags &= ~SENSE_ILI;
+                               }
 
                                if (cmdstatp->flags & SENSE_ILI) {      /* ILI 
*/
                                        if (STp->block_size == 0 &&

Reply via email to