> OK, I've looked at this, and the appended patch should fix this. This
> superceeds my earlier patch. Now, if the driver passes size==0 and it
> flags the media as removable, then the device directory and "disc"
> entry will be created (if not already), and any old partitions are
> removed. Please try this out and let me know how it goes. I hope it
> works, because I've hit the 20 line patch limit I imposed :-)
>
> Regards,
>
> Richard....
> Permanent: rgooch@xxxxxxxxxxxxx
> Current: rgooch@xxxxxxxxxxxxxxx
>
> --- check.c~ Thu Oct 11 18:25:10 2001
> +++ check.c Fri Dec 14 11:02:19 2001
> @@ -338,7 +338,8 @@
> if (!unregister)
> devfs_register_disc (dev, minor);
> for (part = 1; part < dev->max_p; part++) {
> - if ( unregister || (dev->part[part + minor].nr_sects < 1) ) {
> + if ( unregister || (dev->part[minor].nr_sects < 1) ||
> + (dev->part[part + minor].nr_sects < 1) ) {
> devfs_unregister (dev->part[part + minor].de);
> dev->part[part + minor].de = NULL;
> continue;
> @@ -383,6 +384,8 @@
>
> dev->part[first_minor].nr_sects = size;
> /* No such device or no minors to use for partitions */
> + if ( !size && dev->flags && (dev->flags[drive] & GENHD_FL_REMOVABLE) )
> + devfs_register_partitions (dev, first_minor, 0);
> if (!size || minors == 1)
> return;
>
Sorry, this code never gets called... grok_partitions doesn't call
check_partition when "size" is zero, and check_partition is the only
function that calls devfs_register_partitions, which is where this change
was made. Want to make another attempt? :-)
|