RFD: Rework/extending functionality of mdev

Michael Conrad mconrad at intellitree.com
Fri Mar 13 20:32:53 UTC 2015


On 3/13/2015 11:21 AM, Harald Becker wrote:
> On 13.03.2015 12:41, Michael Conrad wrote:
>> Stream-writes are not atomic, and your message can theoretically get
>> cut in half and interleaved with another process writing the same
>> fifo.  (in practice, this is unlikely, but still an invalid design)
>
> ---snip---
> O_NONBLOCK disabled, n <= PIPE_BUF
> All n bytes are written atomically; write(2) may block if there is not
> room for n bytes to be written immediately
> ---snip---
>

I stand corrected.  I thought there would be a partial write if the pipe 
was mostly full, but indeed, it blocks.


>> If someone really wants a netlink solution they will not be happy
>> with a fifo approximation of one.
>
> You missed the fact, my approach allows for free selection of the 
> mechanism. C hosing netlink means using netlink, as it should be. The 
> event listener part is as small as possible and write to the pipe, 
> which fire up a parser / handler to consume the event messages.

Are you suggesting even the netlink mode will have a process reading the 
netlink socket and writing the fifo, so another process and can process 
the fifo?  The netlink messages are already a simple protocol, just use 
it as-is.  Pass the


On 3/13/2015 12:14 PM, Harald Becker wrote:
>> The new code would not be run like a hotplug helper, it would be run as
>> a daemon, probably from a supervisor.  But the old code is still there
>> and can still be run as a hotplug helper.
>
> The new code behaves exactly as the old code. When used as a hotplug 
> helper, it suffers from parsing conf for each event. My approach is a 
> splitting of the old mdev into two active threads, which avoid those 
> problems even for those who like to stay at kernel hotplug.

Then it sounds like indeed, you are introducing new configuration steps 
for the old-style hotplug helper?  i.e. where does the fifo live?  who 
owns it? what security implications does this have?  Who starts the 
single back-end mdev processor?  If started from the hotplug-helper, who 
ensures that only one gets started?

If people have existing systems using hotplug-helper mdev, you can't 
just change the implementation on them in a way that requires extra 
configuration.  Everyone who has commented on this thread so far agrees 
with that.

-Mike


More information about the busybox mailing list