[dm-devel] extracting thin mappings in real time

Thanos Makatos thanos.makatos at sunlight.io
Wed Oct 3 12:40:22 UTC 2018


I have a kernel module that sits on top of a thin device mapper target that
receives block I/O requests and re-submits then to the thin target. I would
like to implement the following functionality: whenever I receive a write
completion from the thin target (assuming that it's the first time a block
written to) I would like to extract the newly-established mapping of that
virtual block.

I know that I can do this using thin_dump, however this involves:
(1) spawning a process
(2) reserving/releasing a metadata snapshot, and
(3) dumping _all_ the mappings.

In other words, it's far to heavyweight for my performance requirements.

Ideally I would like to be able to obtain the mapping in kernel space. I
had a look at thin_dump and from what I understand it directly reads the
B-tree from the disk? Is there some kernel function that already does this?
E.g. given a thin LBA return the physical block address.

Also, regarding having to have reserved a metadata snapshot, is this
necessary for obtaining mappings? Aren't mappings immutable once established
?

-- 
Thanos Makatos
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/dm-devel/attachments/20181003/bf899921/attachment.htm>


More information about the dm-devel mailing list