/* 0 When the tape position is unknown */
        IDETAPE_FLAG_ADDRESS_VALID      = (1 << 1),
        /* Device already opened */
-       IDETAPE_FLAG_BUSY                       = (1 << 2),
-       /* Error detected in a pipeline stage */
-       IDETAPE_FLAG_PIPELINE_ERR       = (1 << 3),
+       IDETAPE_FLAG_BUSY               = (1 << 2),
        /* Attempt to auto-detect the current user block size */
-       IDETAPE_FLAG_DETECT_BS          = (1 << 4),
+       IDETAPE_FLAG_DETECT_BS          = (1 << 3),
        /* Currently on a filemark */
-       IDETAPE_FLAG_FILEMARK           = (1 << 5),
+       IDETAPE_FLAG_FILEMARK           = (1 << 4),
        /* DRQ interrupt device */
-       IDETAPE_FLAG_DRQ_INTERRUPT      = (1 << 6),
-       /* pipeline active */
-       IDETAPE_FLAG_PIPELINE_ACTIVE    = (1 << 7),
+       IDETAPE_FLAG_DRQ_INTERRUPT      = (1 << 5),
        /* 0 = no tape is loaded, so we don't rewind after ejecting */
-       IDETAPE_FLAG_MEDIUM_PRESENT     = (1 << 8),
+       IDETAPE_FLAG_MEDIUM_PRESENT     = (1 << 6),
 };
 
 /* A pipeline stage. */
 
        ide_end_drive_cmd(drive, 0, 0);
 
-       clear_bit(IDETAPE_FLAG_PIPELINE_ACTIVE, &tape->flags);
        spin_unlock_irqrestore(&tape->lock, flags);
        return 0;
 }
                tape->merge_stage = NULL;
        }
 
-       /* Clear pipeline flags. */
-       clear_bit(IDETAPE_FLAG_PIPELINE_ERR, &tape->flags);
        tape->chrdev_dir = IDETAPE_DIR_NONE;
 
        /* Remove pipeline stages. */
 
        debug_log(DBG_SENSE, "%s: cmd=%d\n", __func__, cmd);
 
-       if (test_bit(IDETAPE_FLAG_PIPELINE_ACTIVE, &tape->flags)) {
-               printk(KERN_ERR "ide-tape: bug: the pipeline is active in %s\n",
-                               __func__);
-               return (0);
-       }
-
        idetape_init_rq(&rq, cmd);
        rq.rq_disk = tape->disk;
        rq.special = (void *)bh;
                __idetape_kfree_stage(tape->merge_stage);
                tape->merge_stage = NULL;
        }
-       clear_bit(IDETAPE_FLAG_PIPELINE_ERR, &tape->flags);
        tape->chrdev_dir = IDETAPE_DIR_NONE;
 
        /*
                }
        }
 
-       if (!test_bit(IDETAPE_FLAG_PIPELINE_ACTIVE, &tape->flags)) {
-               if (tape->nr_pending_stages >= 3 * max_stages / 4) {
-                       tape->measure_insert_time = 1;
-                       tape->insert_time = jiffies;
-                       tape->insert_size = 0;
-                       tape->insert_speed = 0;
-               }
+       if (tape->nr_pending_stages >= 3 * max_stages / 4) {
+               tape->measure_insert_time = 1;
+               tape->insert_time = jiffies;
+               tape->insert_size = 0;
+               tape->insert_speed = 0;
        }
+
        return 0;
 }
 
 
        idetape_init_read(drive, tape->max_stages);
 
-       if (test_bit(IDETAPE_FLAG_PIPELINE_ERR, &tape->flags))
-               return 0;
-
        return idetape_queue_rw_tail(drive, REQ_IDETAPE_READ, blocks,
                                     tape->merge_stage->bh);
 }
        if (!test_bit(IDETAPE_FLAG_ADDRESS_VALID, &tape->flags))
                (void)idetape_rewind_tape(drive);
 
-       if (tape->chrdev_dir != IDETAPE_DIR_READ)
-               clear_bit(IDETAPE_FLAG_PIPELINE_ERR, &tape->flags);
-
        /* Read block size and write protect status from drive. */
        ide_tape_get_bsize_from_bdesc(drive);