Re: split kobject creation and hotplug event generation

From: Greg KH
Date: Tue Mar 01 2005 - 03:20:03 EST


On Mon, Feb 28, 2005 at 09:24:43PM +0100, Kay Sievers wrote:
> On Mon, Feb 28, 2005 at 11:46:42AM -0800, Greg KH wrote:
> > On Sat, Feb 26, 2005 at 06:53:16AM +0100, Kay Sievers wrote:
> > > This splits the implicit generation of a hotplug events from
> > > kobject_add() and kobject_del(), to give the user of of these
> > > functions control over the time the event is created.
> > >
> > > The kobject_register() and unregister functions still have the same
> > > behavior and emit the events by themselves.
> > >
> > > The class, block and device core is changed now to emit the hotplug
> > > event _after_ the "dev" file, the "device" symlink and the default
> > > attributes are created. This will save udev from spinning in a stat() loop
> > > to wait for the files to appear, which is expensive if we have a lot of
> > > concurrent events.
> >
> > So, does this solve the issue that everyone has been complaining about
> > for years with the hotplug event happening before the sysfs files are
> > present?
>
> I expect most of them, yes. It is not a guarantee, cause drivers can and will
> create attributes at any time. :) But the most interesting default ones, that
> people tend to expect at event time will be there _before_ the event happens.
>
> To get this for the whole system and not only the class+block core, a few remainig
> places that use kobject_register() need to be changed to use kobject_add(), but
> that is a trivial change and nice too, cause it cleans up some error pathes, where
> a device needs to be unregistered in the same function and it emits two completely
> useless events for that.

Ok, I'll add this patch to my queue, feel free to send a follow-on patch
to also fix up this stuff.

thanks,

greg k-h
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/