diff mbox

st: clear ILI if Medium Error

Message ID alpine.LSU.2.20.1604180843100.1620@xnv.znxvfnen.cevingr (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Kai Mäkisara (Kolumbus) April 18, 2016, 5:47 a.m. UTC
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.makisara@kolumbus.fi>
---
 drivers/scsi/st.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Comments

Martin K. Petersen April 26, 2016, 2:09 a.m. UTC | #1
>>>>> "Kai" == Kai Makisara <Kai.Makisara@kolumbus.fi> writes:

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

Applied to 4.7/scsi-queue.
diff mbox

Patch

--- 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 &&