aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-tape.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/ide-tape.c')
-rw-r--r--drivers/ide/ide-tape.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
index 5adc2c9ae418..cba18a675506 100644
--- a/drivers/ide/ide-tape.c
+++ b/drivers/ide/ide-tape.c
@@ -1020,7 +1020,7 @@ static ide_startstop_t idetape_issue_pc(ide_drive_t *drive,
1020 1020
1021 ide_pktcmd_tf_load(drive, IDE_TFLAG_OUT_DEVICE, bcount, dma_ok); 1021 ide_pktcmd_tf_load(drive, IDE_TFLAG_OUT_DEVICE, bcount, dma_ok);
1022 1022
1023 if (test_bit(IDETAPE_FLAG_DRQ_INTERRUPT, &tape->flags)) { 1023 if (pc->flags & PC_FLAG_DRQ_INTERRUPT) {
1024 ide_execute_command(drive, WIN_PACKETCMD, &idetape_transfer_pc, 1024 ide_execute_command(drive, WIN_PACKETCMD, &idetape_transfer_pc,
1025 IDETAPE_WAIT_CMD, NULL); 1025 IDETAPE_WAIT_CMD, NULL);
1026 return ide_started; 1026 return ide_started;
@@ -1143,8 +1143,10 @@ static ide_startstop_t idetape_do_request(ide_drive_t *drive,
1143 } 1143 }
1144 1144
1145 /* Retry a failed packet command */ 1145 /* Retry a failed packet command */
1146 if (tape->failed_pc && tape->pc->c[0] == REQUEST_SENSE) 1146 if (tape->failed_pc && tape->pc->c[0] == REQUEST_SENSE) {
1147 return idetape_issue_pc(drive, tape->failed_pc); 1147 pc = tape->failed_pc;
1148 goto out;
1149 }
1148 1150
1149 if (postponed_rq != NULL) 1151 if (postponed_rq != NULL)
1150 if (rq != postponed_rq) { 1152 if (rq != postponed_rq) {
@@ -1216,6 +1218,9 @@ static ide_startstop_t idetape_do_request(ide_drive_t *drive,
1216 } 1218 }
1217 BUG(); 1219 BUG();
1218out: 1220out:
1221 if (test_bit(IDETAPE_FLAG_DRQ_INTERRUPT, &tape->flags))
1222 pc->flags |= PC_FLAG_DRQ_INTERRUPT;
1223
1219 return idetape_issue_pc(drive, pc); 1224 return idetape_issue_pc(drive, pc);
1220} 1225}
1221 1226