diff options
author | kay.sievers@vrfy.org <kay.sievers@vrfy.org> | 2004-12-11 21:43:08 +0100 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 23:13:47 -0700 |
commit | 79721e0a7770b1a5874ef96cbf93a4c6bd19e138 (patch) | |
tree | e3f03a15854bd8e2d3e290f5d08653bfc9470b70 /udevd.h | |
parent | 0dfbe9451b47cfa0464f5d3ba232ceccf26ae189 (diff) |
[PATCH] udevd: serialization of the event sequence of a chain of devices
Currently udevd delays only events for the same DEVPATH.
Example of an "add" event sequence:
/block/sda
/block/sda/sda1
With this change, we make sure, that the udev process handling
/block/sda has finished its work (waited for all attributes,
created the node) before we fork the udev event for /block/sda/sda1.
This way the event for sda1 can be sure, that the node for the
main device is already created (may be useful for disk labels).
It will not affect any parallel device handling, only the sequence
of the devices directory chain is serialized. The 10.000 disks
plugged in will still run as parallel events. :)
The main motivation to do this is the program execution of the
dev.d/ and hotplug.d/ directory. If we don't wait for the parent
event to exit, we can't be sure that the executed scripts are
run in the right order.
On Thu, Dec 09, 2004 at 09:18:28AM +0100, Kay Sievers wrote:
> On Wed, 2004-12-08 at 19:07 -0800, David Brownell wrote:
> > Could that argument apply to the underlying hardware, too?
> We now make sure that the sequence of events for a device
> is serialized for every device chain and the class/block
> devices which have a "device" link to a physical device are
> handled after the physical device is fully populated and
> notified to userspace. It will only work this way on kernels
> later than 2.6.10-rc1 cause it depends on the PHYSDEVPATH
> value in the hotplug environment.
Diffstat (limited to 'udevd.h')
-rw-r--r-- | udevd.h | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -47,6 +47,7 @@ struct hotplug_msg { char *devpath; char *subsystem; unsigned long long seqnum; + char *physdevpath; char *envp[HOTPLUG_NUM_ENVP+1]; char envbuf[]; }; |