scsi: st: New session only when Unit Attention for new tape
authorKai Mäkisara <Kai.Makisara@kolumbus.fi>
Wed, 6 Nov 2024 09:57:23 +0000 (11:57 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 7 Nov 2024 02:18:16 +0000 (21:18 -0500)
Currently the code starts new tape session when any Unit Attention
(UA) is seen when opening the device. This leads to incorrectly
clearing pos_unknown when the UA is for reset. Set new session only
when the UA is for a new tape.

Signed-off-by: Kai Mäkisara <Kai.Makisara@kolumbus.fi>
Link: https://lore.kernel.org/r/20241106095723.63254-4-Kai.Makisara@kolumbus.fi
Reviewed-by: John Meneghini <jmeneghi@redhat.com>
Tested-by: John Meneghini <jmeneghi@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/st.c

index 4863802..fe0618a 100644 (file)
@@ -991,7 +991,10 @@ static int test_ready(struct scsi_tape *STp, int do_wait)
                        scode = cmdstatp->sense_hdr.sense_key;
 
                        if (scode == UNIT_ATTENTION) { /* New media? */
-                               new_session = 1;
+                               if (cmdstatp->sense_hdr.asc == 0x28) { /* New media */
+                                       new_session = 1;
+                                       DEBC_printk(STp, "New tape session.");
+                               }
                                if (attentions < MAX_ATTENTIONS) {
                                        attentions++;
                                        continue;