|
@@ -656,15 +656,15 @@ static ide_startstop_t idetape_do_request(ide_drive_t *drive,
|
|
|
|
|
|
if ((drive->dev_flags & IDE_DFLAG_DSC_OVERLAP) == 0 &&
|
|
|
(rq->cmd[13] & REQ_IDETAPE_PC2) == 0)
|
|
|
- set_bit(IDE_AFLAG_IGNORE_DSC, &drive->atapi_flags);
|
|
|
+ drive->atapi_flags |= IDE_AFLAG_IGNORE_DSC;
|
|
|
|
|
|
if (drive->dev_flags & IDE_DFLAG_POST_RESET) {
|
|
|
- set_bit(IDE_AFLAG_IGNORE_DSC, &drive->atapi_flags);
|
|
|
+ drive->atapi_flags |= IDE_AFLAG_IGNORE_DSC;
|
|
|
drive->dev_flags &= ~IDE_DFLAG_POST_RESET;
|
|
|
}
|
|
|
|
|
|
- if (!test_and_clear_bit(IDE_AFLAG_IGNORE_DSC, &drive->atapi_flags) &&
|
|
|
- (stat & ATA_DSC) == 0) {
|
|
|
+ if (!(drive->atapi_flags & IDE_AFLAG_IGNORE_DSC) &&
|
|
|
+ !(stat & ATA_DSC)) {
|
|
|
if (postponed_rq == NULL) {
|
|
|
tape->dsc_polling_start = jiffies;
|
|
|
tape->dsc_poll_freq = tape->best_dsc_rw_freq;
|
|
@@ -684,7 +684,9 @@ static ide_startstop_t idetape_do_request(ide_drive_t *drive,
|
|
|
tape->dsc_poll_freq = IDETAPE_DSC_MA_SLOW;
|
|
|
idetape_postpone_request(drive);
|
|
|
return ide_stopped;
|
|
|
- }
|
|
|
+ } else
|
|
|
+ drive->atapi_flags &= ~IDE_AFLAG_IGNORE_DSC;
|
|
|
+
|
|
|
if (rq->cmd[13] & REQ_IDETAPE_READ) {
|
|
|
pc = &tape->queued_pc;
|
|
|
ide_tape_create_rw_cmd(tape, pc, rq, READ_6);
|