[dm-devel] Newbie questions

Alec Thomas lists at swapoff.org
Wed Dec 3 07:33:01 UTC 2003


Hi Joe,

> No you will need to stack the devices, this is quite deliberate.  The
> overhead is very small.  Write a target that 1 thing, and 1 thing only
> ;)

Okay, fair enough...I had suspected this was the case from looking at
the code. Simple is good :)

> This is a hard problem, since you have to be extremely careful to
> avoid deadlocks due to memory allocation failure.  eg. if the the
> physical memory is full, and so some io gets triggered to relieve this
> presure, which goes through your target, which calls some userland
> code which has been paged out ...

Right, that makes sense. I've been looking at the nbd code and it
appears the user-space stuff is just for control information; the
actual transfer of blocks over the network takes place in kernel space.

So, from my understanding, to make a reliable user-space daemon you
would need to mlock every page used by the user-space daemon. Code,
data, everything.

What a dilemma...the advantages of user-space are many; integration with
existing cluster infrastructure, being able to leverage existing
libraries, etc.

> 
> Communication with userland is envisaged as being a very rare
> occurance, certainly not for every io.  You can use the status command
> to get back some information from your target, and the
> dm_table_event() function can be used to indicate to userland that the
> status has changed.

Right, I noticed the status stuff, but there didn't seem to be a
"device-mapper" way to actually communicate with the target once it is
up and running? I guess creating a /proc entry or another device node
specifically for communication is the only way?

Alec

-- 
Evolution: Taking care of those too stupid to take care of themselves.




More information about the dm-devel mailing list