[dm-devel] New dm-bufio with shrinker API
Mikulas Patocka
mpatocka at redhat.com
Wed Sep 7 18:39:38 UTC 2011
> One other optimisation to think about: As you know, if a non-blocking
> lookup of the thinp mapping fails, the bio gets handed across to a
> worker thread to do the blocking lookup. Is there any way to you
> could make dm_bm_read_try_lock() pass a preload hint to bufio, since
> we know that block is going to be required in the near future?
>
> - Joe
No, you can't submit any IOs in the request handler (i.e. in dm's "map"
function). Such IOs are queued and delayed until the request handler
exits. If it I did it, there would be IO hanging which is not going to be
finished and a deadlock possibility.
For example:
* process 1 submits a bio in the request handler, bio submittion waits
until the request handler exits
* process 2 takes the dm-bufio mutex and waits for this bio to be finished
(thus, it waits for the request handler of process 1 to finish)
* process 1 tries to take the dm-bufio mutex again in the same request
handler, waiting for process 2, which waits for process 1 --- deadlock.
Mikulas
More information about the dm-devel
mailing list