Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git] / drivers / ide / ide-floppy.c
index adbe9f7..a53e3ce 100644 (file)
@@ -82,6 +82,7 @@
 
 #define IDEFLOPPY_VERSION "0.99.newide"
 
+#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/string.h>
@@ -838,7 +839,7 @@ static ide_startstop_t idefloppy_pc_intr (ide_drive_t *drive)
                        "transferred\n", pc->actually_transferred);
                clear_bit(PC_DMA_IN_PROGRESS, &pc->flags);
 
-               local_irq_enable_in_hardirq();
+               local_irq_enable();
 
                if (status.b.check || test_bit(PC_DMA_ERROR, &pc->flags)) {
                        /* Error detected */
@@ -897,7 +898,8 @@ static ide_startstop_t idefloppy_pc_intr (ide_drive_t *drive)
                                        "to send us more data than expected "
                                        "- discarding data\n");
                                idefloppy_discard_data(drive,bcount.all);
-                               BUG_ON(HWGROUP(drive)->handler != NULL);
+                               if (HWGROUP(drive)->handler != NULL)
+                                       BUG();
                                ide_set_handler(drive,
                                                &idefloppy_pc_intr,
                                                IDEFLOPPY_WAIT_CMD,
@@ -930,7 +932,8 @@ static ide_startstop_t idefloppy_pc_intr (ide_drive_t *drive)
        pc->actually_transferred += bcount.all;
        pc->current_position += bcount.all;
 
-       BUG_ON(HWGROUP(drive)->handler != NULL);
+       if (HWGROUP(drive)->handler != NULL)
+               BUG();
        ide_set_handler(drive, &idefloppy_pc_intr, IDEFLOPPY_WAIT_CMD, NULL);           /* And set the interrupt handler again */
        return ide_started;
 }
@@ -957,7 +960,8 @@ static ide_startstop_t idefloppy_transfer_pc (ide_drive_t *drive)
                                "issuing a packet command\n");
                return ide_do_reset(drive);
        }
-       BUG_ON(HWGROUP(drive)->handler != NULL);
+       if (HWGROUP(drive)->handler != NULL)
+               BUG();
        /* Set the interrupt routine */
        ide_set_handler(drive, &idefloppy_pc_intr, IDEFLOPPY_WAIT_CMD, NULL);
        /* Send the actual packet */
@@ -1013,7 +1017,8 @@ static ide_startstop_t idefloppy_transfer_pc1 (ide_drive_t *drive)
         * 40 and 50msec work well. idefloppy_pc_intr will not be actually
         * used until after the packet is moved in about 50 msec.
         */
-       BUG_ON(HWGROUP(drive)->handler != NULL);
+       if (HWGROUP(drive)->handler != NULL)
+               BUG();
        ide_set_handler(drive, 
          &idefloppy_pc_intr,           /* service routine for packet command */
          floppy->ticks,                /* wait this long before "failing" */
@@ -1283,7 +1288,7 @@ static ide_startstop_t idefloppy_do_request (ide_drive_t *drive, struct request
 
        debug_log(KERN_INFO "rq_status: %d, dev: %s, flags: %lx, errors: %d\n",
                        rq->rq_status,
-                       rq->rq_disk ? rq->rq_disk->disk_name : "?",
+                       rq->rq_disk ? rq->rq_disk->disk_name ? "?",
                        rq->flags, rq->errors);
        debug_log(KERN_INFO "sector: %ld, nr_sectors: %ld, "
                        "current_nr_sectors: %d\n", (long)rq->sector,
@@ -2175,6 +2180,7 @@ static int ide_floppy_probe(ide_drive_t *drive)
 
        g->minors = 1 << PARTN_BITS;
        g->driverfs_dev = &drive->gendev;
+       strcpy(g->devfs_name, drive->devfs_name);
        g->flags = drive->removable ? GENHD_FL_REMOVABLE : 0;
        g->fops = &idefloppy_ops;
        drive->attach = 1;