On 08/13/2015 03:57 PM, Dan Williams wrote:
This is explicitly addressed in the changelog, repeated here:
> The __pfn_t to resource lookup is indeed inefficient walking of a linked list,
> but there are two mitigating factors:
> 1/ The number of persistent memory ranges is bounded by the number of
> DIMMs which is on the order of 10s of DIMMs, not hundreds.
You do not get where I'm comming from. It used to be a [ptr - ONE_BASE + OTHER_BASE]
(In 64 bit) it is now a call and a loop and a search. how ever you will look at
it is *not* the instantaneous address translation it is now.
I have memory I want memory speeds. You keep thinking HD speeds, where what ever
you do will not matter.
> 2/ The lookup yields the entire range, if it becomes inefficient
to do a
> kmap_atomic_pfn_t() a PAGE_SIZE at a time the caller can take
> advantage of the fact that the lookup can be amortized for all kmap
> operations it needs to perform in a given range.
What "given range" how can a bdev assume that the all sg-list belongs to the
same "range". In fact our code does multple-pmem devices for a long time.
What about say md-of-pmems for example, or btrfs
DAX as is is races against pmem unbind. A synchronization cost
be paid somewhere to make sure the memremap() mapping is still valid.
Sorry for being so slow, is what I asked. what is exactly "pmem unbind" ?
Currently in my 4.1 Kernel the ioremap is done on modprobe time and
released modprobe --remove time. the --remove can not happen with a mounted
FS dax or not. So what is exactly "pmem unbind". And if there is a new knob
then make it refuse with a raised refcount.