On Wed, 8 Nov 2017, Christoph Hellwig wrote: > Can you start by explaining what you actually need the vmap for? It is possible to use lvm on persistent memory. You can create linear or striped logical volumes on persistent memory and these volumes still have the direct_access method, so they can be mapped with the function dax_direct_access(). If we create logical volumes on persistent memory, the method dax_direct_access() won't return the whole device, it will return only a part. When dax_direct_access() returns the whole device, my driver just uses it without vmap. When dax_direct_access() return only a part of the device, my driver calls it repeatedly to get all the parts and then assembles the parts into a linear address space with vmap. See the function persistent_memory_claim() here: https://www.redhat.com/archives/dm-devel/2017-November/msg00026.html > Going through a vmap for every I/O is certainly not going to be nice > on NVDIMM-N or similar modules :) It's just a call to vmalloc_to_page. Though, if persistent memory is not page-backed, I have to copy the data before writing them. Mikulas -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel