lkml.org 
[lkml]   [2006]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH] ide_scsi: allow it to be used for non CD only
Hi,

Nowadays, you can dynamically change driver bound to a device using
sysfs and it works just fine for IDE, ie:

echo -n "1.0" > /sys/bus/ide/drivers/ide-scsi/unbind
echo -n "1.0" > /sys/bus/ide/drivers/ide-cdrom/bind

to unbind /dev/hdc from ide-scsi and bind to ide-cdrom

That was one of the main goals behind my old patches to convert
IDE device drivers to device-model.

Please don't add another module parameter for controlling driver binding
and making it more complicated than already is:
* "hdx=scsi" kernel parameter
* "hdx=driver" kernel parameter
* /proc/ide/hd?/driver interface
* ide_cd and "ignore" parameter
(actually all the above can go away).

Bart

On 11/29/06, Alan <alan@lxorguk.ukuu.org.uk> wrote:
> Some people want to use ide_cd for CD-ROM but still dynamically load
> ide-scsi for things like tape drives. If you compile in the CD driver
> this works out but if you want them modular you need an option to ensure
> that whoever loads first the right things happen.
>
> This replaces the original draft patch which leaked a scsi host reference
>
> Signed-off-by: Alan Cox <alan@redhat.com>
>
> diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.19-rc6-mm1/drivers/scsi/ide-scsi.c linux-2.6.19-rc6-mm1/drivers/scsi/ide-scsi.c
> --- linux.vanilla-2.6.19-rc6-mm1/drivers/scsi/ide-scsi.c 2006-11-24 13:58:08.000000000 +0000
> +++ linux-2.6.19-rc6-mm1/drivers/scsi/ide-scsi.c 2006-11-29 14:18:12.000000000 +0000
> @@ -110,6 +110,7 @@
> } idescsi_scsi_t;
>
> static DEFINE_MUTEX(idescsi_ref_mutex);
> +static int idescsi_nocd; /* Set by module param to skip cd */
>
> #define ide_scsi_g(disk) \
> container_of((disk)->private_data, struct ide_scsi_obj, driver)
> @@ -1127,11 +1128,14 @@
> warned = 1;
> }
>
> + if (idescsi_nocd && drive->media == ide_cdrom)
> + return -ENODEV;
> +
> if (!strstr("ide-scsi", drive->driver_req) ||
> !drive->present ||
> drive->media == ide_disk ||
> !(host = scsi_host_alloc(&idescsi_template,sizeof(idescsi_scsi_t))))
> return -ENODEV;
>
> g = alloc_disk(1 << PARTN_BITS);
> if (!g)
> @@ -1187,6 +1192,7 @@
> driver_unregister(&idescsi_driver.gen_driver);
> }
>
> +module_param(idescsi_nocd, int, 0600);
> module_init(init_idescsi_module);
> module_exit(exit_idescsi_module);
> MODULE_LICENSE("GPL");
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-11-29 23:11    [W:0.052 / U:0.800 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site