Re: [PATCH] fix pktcdvd breakage from commit e105b8bfc769b0545b6f0f395179d1e43cbee822

Kay Sievers
2008-11-30T14:28:27Z

On Sun, Nov 30, 2008 at 15:13, Al Viro <viro@zeniv.linux.org.uk> wrote:
> On Sun, Nov 30, 2008 at 02:57:14PM +0100, Kay Sievers wrote:
>> > "It" being udev, presumably?
>>
>> Yes, udev, mdev, and a few other tools people use to populate /dev
>> from the kernel supplied device information.
>>
>> > What a mess... How does drivers/usb/core/devio.c avoid essentially the same
>> > problem?
>>
>> It's a special case, where two "struct device" have the same dev_t,
>> but they both point to and handle the same device, so it's fine. The
>> usb_device class is deprecated, no recent distro uses it, and will be
>> removed some day.
>
> Would that happened to udev as well... Yeah, I know, but one can dream ;-/

If there are two devices with the same dev_t, and udev is configured
to create the same names in /dev, it will create the node for the
first event, and reuse is for the second identical event. There is no
problem here.

> Bloody wonderful. So we have
> * userland-exposed layout of directory trees created by pktcdvd
> * uevent mess generated by device_create() and *also* userland-exposed
>
> So we need to preserve the layout, with the easiest way probably being "add
> one more ktype and use kobject_init_and_add() instead of that device_create()".
> Sigh...

What do you mean? We just need to replace the bogus "pd->pkt_dev" with
MKDEV(0, 0) and we are fine.

Kay