[dm-devel] Another experimental dm target... an encryption target
Joe Thornber
thornber at sistina.com
Tue Jul 29 15:03:02 UTC 2003
On Tue, Jul 29, 2003 at 06:43:57PM +0200, Christophe Saout wrote:
> Yes, you got me... I saw that you are using page pools in the current dm
> 2.4 implementation. That's why I wanted to wait and possibly use that
> implementation instead. Or should I implement my own little pool?
The only place I'm using pages is in kcopyd, I needed different
semantics to a mempool, so I did it a different way. You should be
able to use mempools.
> Yes, I could do this. Does this mean that I have to wait for a split
> write to return first before I can continue to write the next part of
> the bio? When the pool runs empty?
You can write the rest as soon as you can allocate some memory for
this.
> I could do something like this:
>
> 1. try to allocate pages with the nowait option (so it fails if the
> system needs to swap out or something)
> 2. if that fails try to use some pages from the pool, so it's only used
> in emergency mode
> 3. if that fails and you've already got some pages, submit a partial bio
> and
> 4. try to wait for the pool to refill (if it's empty that means that
> other write request are currently using them and they will definitely
> return some day so you won't deadlock here).
>
> When writes terminate you can put every page back on the pool even those
> that originally didn't come from the pool until the pool reaches its
> maximum number of pages.
>
> Would that be a strategy? Or is it too complicated?
You have nicely described the mempool code ;) This is already done for
you, see mm/mempool.c it's not long, but it's essential that you
understand how it will behave.
> > on a low memory config with the dm device mounted on /mnt. I suggest
> > you try the same, I really don't trust any code that has come from
> > loop.c.
>
> Yes, I don't think that code's too clever either. If you are out of
> memory, your swap is full and the kernel wants to write out dirty pages
> to reclaim memory but the writes are stuck waiting for buffers to do the
> encryption, you run into a deadlock.
yep, this is the big deadlock that mempools were invented to fix.
- Joe
More information about the dm-devel
mailing list