linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH][2.6] units= parameter for ide-scsi
@ 2004-01-10 15:02 Mikael Pettersson
  2004-01-10 20:59 ` Willem Riede
  0 siblings, 1 reply; 2+ messages in thread
From: Mikael Pettersson @ 2004-01-10 15:02 UTC (permalink / raw)
  To: wrlk; +Cc: linux-kernel

Wed, 7 Jan 2004 21:28:35 -0500, Willem Riede wrote:
>On 2004.01.05 17:00, Mikael Pettersson wrote:
>> On Fri, 26 Dec 2003 13:12:42 -0500, Willem Riede wrote:
>> ...
>> >So can we agree to keep ide-scsi? I know it is not desired any
>> >more for cd writers. To avoid the problem reports from people who
>> >don't realize that and select ide-scsi anyway, we can refuse to
>> >attach to a cd-type device (today it just warns). And/or make a 
>> >new explicit module parameter to tell ide-scsi exactly which 
>> >drives to attach to.
>> 
>> I have a simple patch to do exactly that. Contact me if you want it.
>
>Yes, please do send me that patch.

This is my patch to add a "units=" parameter to ide-scsi.
It's useful for people that, like me, have more than one
ATAPI device in a machine. Sample usage:

modprobe ide_scsi units=hdc+hdd
to claim both hdc and hdd for ide-scsi.

modprobe ide_scsi units=hdd
to claim only hdd for ide-scsi, skipping all
other unclaimed devices.

This also works in the non-modular case. Simply pass
"ide_scsi.units=..." as a kernel boot argument.

The /* XXX: too horrible to explain */ comment refers to a
problem with the module_param implementation, which creates a
string literal from the kbuild-defined module name. Unfortunately
"ide_scsi" is a #define in <linux/ide.h>, so the string literal
ends up containing the value of ide_scsi rather than its spelling.
Hence the #undef.

/Mikael

diff -rupN linux-2.6.1/drivers/scsi/ide-scsi.c linux-2.6.1.ide-scsi-units/drivers/scsi/ide-scsi.c
--- linux-2.6.1/drivers/scsi/ide-scsi.c	2003-12-18 10:57:09.000000000 +0100
+++ linux-2.6.1.ide-scsi-units/drivers/scsi/ide-scsi.c	2004-01-10 15:40:11.000000000 +0100
@@ -45,6 +45,7 @@
 #include <linux/hdreg.h>
 #include <linux/slab.h>
 #include <linux/ide.h>
+#include <linux/moduleparam.h>
 
 #include <asm/io.h>
 #include <asm/bitops.h>
@@ -947,6 +948,10 @@ static Scsi_Host_Template idescsi_templa
 	.proc_name		= "ide-scsi",
 };
 
+static char *units;
+#undef ide_scsi /* XXX: too horrible to explain */
+module_param_named(units, units, charp, 0);
+
 static int idescsi_attach(ide_drive_t *drive)
 {
 	idescsi_scsi_t *idescsi;
@@ -954,6 +959,10 @@ static int idescsi_attach(ide_drive_t *d
 	static int warned;
 	int err;
 
+	if (units && !strstr(units, drive->name)) {
+		printk(KERN_INFO "ide-scsi: ignoring drive %s\n", drive->name);
+		return 1;
+	}
 	if (!warned && drive->media == ide_cdrom) {
 		printk(KERN_WARNING "ide-scsi is deprecated for cd burning! Use ide-cd and give dev=/dev/hdX as device\n");
 		warned = 1;

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH][2.6] units= parameter for ide-scsi
  2004-01-10 15:02 [PATCH][2.6] units= parameter for ide-scsi Mikael Pettersson
@ 2004-01-10 20:59 ` Willem Riede
  0 siblings, 0 replies; 2+ messages in thread
From: Willem Riede @ 2004-01-10 20:59 UTC (permalink / raw)
  To: linux-kernel; +Cc: Mikael Pettersson

On 2004.01.10 10:02, Mikael Pettersson wrote:
> This is my patch to add a "units=" parameter to ide-scsi.
> It's useful for people that, like me, have more than one
> ATAPI device in a machine. Sample usage:

I found that if only the existing hdx=ide-scsi mechanism had been
strictly enforced, this functionality had already existed:

--- linux-2.6.1/drivers/scsi/ide-scsi.c	2003-12-17 21:59:05.000000000 -0500
+++ /tmp/ide-scsi.c	2004-01-10 15:44:35.000000000 -0500
@@ -54,6 +54,9 @@
 #include "hosts.h"
 #include <scsi/sg.h>
 
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Scsi emulator for ATAPI Tape and MO devices");
+
 #define IDESCSI_DEBUG_LOG		0
 
 typedef struct idescsi_pc_s {
@@ -954,17 +957,18 @@
 	static int warned;
 	int err;
 
-	if (!warned && drive->media == ide_cdrom) {
-		printk(KERN_WARNING "ide-scsi is deprecated for cd burning! Use ide-cd and give dev=/dev/hdX as device\n");
-		warned = 1;
-	}
-
-	if (!strstr("ide-scsi", drive->driver_req) ||
+	if (!drive->driver_req ||
+	    !strstr(drive->driver_req, "ide-scsi") ||
 	    !drive->present ||
 	    drive->media == ide_disk ||
 	    !(host = scsi_host_alloc(&idescsi_template,sizeof(idescsi_scsi_t))))
 		return 1;
 
+	if (!warned && drive->media == ide_cdrom) {
+		printk(KERN_WARNING "ide-scsi is deprecated for cd burning! Use ide-cd and give dev=/dev/hdX as device\n");
+		warned = 1;
+	}
+
 	host->max_id = 1;
 	host->max_lun = 1;
 	drive->driver_data = host;
@@ -1000,4 +1004,3 @@
 
 module_init(init_idescsi_module);
 module_exit(exit_idescsi_module);
-MODULE_LICENSE("GPL");


Regards, Willem Riede.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-01-10 20:59 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-01-10 15:02 [PATCH][2.6] units= parameter for ide-scsi Mikael Pettersson
2004-01-10 20:59 ` Willem Riede

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).