[libata] allow ATAPI to be enabled with new atapi_enabled module option
authorJeff Garzik <jgarzik@pobox.com>
Tue, 30 Aug 2005 07:37:42 +0000 (03:37 -0400)
committerJeff Garzik <jgarzik@pobox.com>
Tue, 30 Aug 2005 07:37:42 +0000 (03:37 -0400)
ATAPI is getting close to being ready.  To increase exposure, we enable
the code in the upstream kernel, but default it to off (present
behavior).  Users must pass atapi_enabled=1 as a module option (if
module) or on the kernel command line (if built in) to turn on
discovery of their ATAPI devices.

drivers/scsi/libata-core.c
drivers/scsi/libata-scsi.c
drivers/scsi/libata.h
include/linux/libata.h

index dee4b12b034261f4bbdf28e9b956dcb8d0d23ead..d824938d05c90829de7ae932613ed53ccd8c2e0b 100644 (file)
@@ -75,6 +75,10 @@ static void __ata_qc_complete(struct ata_queued_cmd *qc);
 static unsigned int ata_unique_id = 1;
 static struct workqueue_struct *ata_wq;
 
+int atapi_enabled = 0;
+module_param(atapi_enabled, int, 0444);
+MODULE_PARM_DESC(atapi_enabled, "Enable discovery of ATAPI devices (0=off, 1=on)");
+
 MODULE_AUTHOR("Jeff Garzik");
 MODULE_DESCRIPTION("Library module for ATA devices");
 MODULE_LICENSE("GPL");
index 346eb36b1e31e0c5665269077e65ef4f11149644..55823765425c3e60a3c718f706c0553137cc3b13 100644 (file)
@@ -1470,10 +1470,10 @@ ata_scsi_find_dev(struct ata_port *ap, struct scsi_device *scsidev)
        if (unlikely(!ata_dev_present(dev)))
                return NULL;
 
-#ifndef ATA_ENABLE_ATAPI
-       if (unlikely(dev->class == ATA_DEV_ATAPI))
-               return NULL;
-#endif
+       if (atapi_enabled) {
+               if (unlikely(dev->class == ATA_DEV_ATAPI))
+                       return NULL;
+       }
 
        return dev;
 }
index 809c634afbcda8792bd1ec9f07c0e4593251ad93..d608b3a0f6fe6897d108cd8f6557c8e4d53c1820 100644 (file)
@@ -38,6 +38,7 @@ struct ata_scsi_args {
 };
 
 /* libata-core.c */
+extern int atapi_enabled;
 extern struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap,
                                      struct ata_device *dev);
 extern void ata_qc_free(struct ata_queued_cmd *qc);
index fc05a989928898c91b4800647aa21d228cd5e5a7..1eaba4077e15a7f5c3cdca1b1de764162ba3de01 100644 (file)
@@ -40,7 +40,6 @@
 #undef ATA_VERBOSE_DEBUG       /* yet more debugging output */
 #undef ATA_IRQ_TRAP            /* define to ack screaming irqs */
 #undef ATA_NDEBUG              /* define to disable quick runtime checks */
-#undef ATA_ENABLE_ATAPI                /* define to enable ATAPI support */
 #undef ATA_ENABLE_PATA         /* define to enable PATA support in some
                                 * low-level drivers */
 #undef ATAPI_ENABLE_DMADIR     /* enables ATAPI DMADIR bridge support */