浏览代码

st: clear ILI if Medium Error

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>
Reviewed-by: Laurence Oberman <loberman@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Kai Makisara 9 年之前
父节点
当前提交
5e4fabb6eb
共有 1 个文件被更改,包括 6 次插入3 次删除
  1. 6 3
      drivers/scsi/st.c

+ 6 - 3
drivers/scsi/st.c

@@ -1974,9 +1974,12 @@ static long read_tape(struct scsi_tape *STp, long count,
 					transfer = (int)cmdstatp->uremainder64;
 					transfer = (int)cmdstatp->uremainder64;
 				else
 				else
 					transfer = 0;
 					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 (cmdstatp->flags & SENSE_ILI) {	/* ILI */
 					if (STp->block_size == 0 &&
 					if (STp->block_size == 0 &&