--- ide-tape.c.orig	Fri May 27 22:16:10 2005
+++ ide-tape.c	Fri May 27 22:15:46 2005
@@ -487,7 +487,7 @@
 /*
  *	Some tape drives require a long irq timeout
  */
-#define IDETAPE_WAIT_CMD		(60*HZ)
+#define IDETAPE_WAIT_CMD		(900*HZ)
 
 /*
  *	DSC timings.
@@ -1824,6 +1824,17 @@
 		idetape_update_buffers (pc);
 	}
 #endif /* CONFIG_BLK_DEV_IDEDMA */
+
+	/* sense key = 5, asc = 0x22, ascq = 0 --> bogus error */
+	if ((pc->c[0] == IDETAPE_READ_CMD || pc->c[0] == IDETAPE_WRITE_CMD)
+		&& pc->c[4] == 0 && pc->c[3] == 0 && pc->c[2] == 0) {
+
+		if (result->sense_key == 5) {
+			pc->error = 0;
+			set_bit (PC_ABORT, &pc->flags);
+		}
+	}
+	
 	if (pc->c[0] == IDETAPE_READ_CMD && result->filemark) {
 		pc->error = IDETAPE_ERROR_FILEMARK;
 		set_bit (PC_ABORT, &pc->flags);
@@ -3763,6 +3774,10 @@
 	drive->driver_data = tape;
 	drive->ready_stat = 0;			/* An ATAPI device ignores DRDY */
 	drive->dsc_overlap = 1;
+
+	if (strstr(drive->id->model, "Seagate STT3401"))
+		drive->dsc_overlap = 0;
+
 	memset (tape, 0, sizeof (idetape_tape_t));
 	tape->drive = drive;
 	tape->minor = minor;
