Messages in this thread | | | Date | Thu, 7 May 2015 10:43:01 -0700 | Subject | Re: [PATCH v2 00/10] evacuate struct page from the block layer, introduce __pfn_t | From | Linus Torvalds <> |
| |
On Thu, May 7, 2015 at 9:03 AM, Dan Williams <dan.j.williams@intel.com> wrote: > > Ok, I'll keep thinking about this and come back when we have a better > story about passing mmap'd persistent memory around in userspace.
Ok. And if we do decide to go with your kind of "__pfn" type, I'd probably prefer that we encode the type in the low bits of the word rather than compare against PAGE_OFFSET. On some architectures PAGE_OFFSET is zero (admittedly probably not ones you'd care about), but even on x86 it's a *lot* cheaper to test the low bit than it is to compare against a big constant.
We know "struct page *" is supposed to be at least aligned to at least "unsigned long", so you'd have two bits of type information (and we could easily make it three). With "0" being a real pointer, so that you can use the pointer itself without masking.
And the "hide type in low bits of pointer" is something we've done quite a lot, so it's more "kernel coding style" anyway.
Linus
| |