[dm-devel] [PATCH] improve atomicity of device creation

Kay Sievers kay.sievers at vrfy.org
Tue Dec 11 18:25:32 UTC 2007


On Tue, 2007-12-11 at 18:08 +0000, Alasdair G Kergon wrote:
> On Tue, Dec 11, 2007 at 06:51:31PM +0100, Kay Sievers wrote:
> > We can make the kernel's kobject_uevent() return the generated seqnum to
> > the caller.
> 
> Is 32 bits enough?

In the kernel it is 64 bit. Udev also uses 64bit number, but it does not
care about the value these days (netlink is never out of order,
unlike /sbin/hotplug). Only the udev queue export would break if the
number wraps around and duplicates are generated in a window of 180
seconds (the event process kills itself after that time). :)

So we would need to strip the upper 32 bit of the numbers we see from
udev, and handle the case where the 32 bit number wraps around.

> We added 'uint32_t padding;' recently which we I reckon we could now use for
> this.
> 
> dm_kobject_uevent() and alloc_dev() could keep a new field in
> struct mapped_device up-to-date, and a new function could return its
> value to dm-ioctl.c code to place into a renamed 'padding' field
> before returning to userspace?

Yes, we would return the kernel generated seqnum to the libdevmapper
ioctl.

Should we create an additional new iocl to request the device node
creation, or add that call to an existing one?

Could it be that we want to pass more properties to the event, which are
added as environment keys?

Kay




More information about the dm-devel mailing list