Re: [PATCH v6 3/5] mm: introduce mmap3 for safely defining new mmap flags
From: Dan Williams <hidden>
Date: 2017-08-25 20:24:31
Also in:
linux-fsdevel, linux-mm, linux-xfs, lkml, nvdimm
On Fri, Aug 25, 2017 at 9:19 AM, Helge Deller [off-list ref] wrote:
On 25.08.2017 18:16, Kirill A. Shutemov wrote:quoted
On Fri, Aug 25, 2017 at 09:02:36AM -0700, Christoph Hellwig wrote:quoted
On Fri, Aug 25, 2017 at 06:58:03PM +0300, Kirill A. Shutemov wrote:quoted
Not all archs are ready for this: arch/parisc/include/uapi/asm/mman.h:#define MAP_TYPE 0x03 /* Mask for type of mapping */ arch/parisc/include/uapi/asm/mman.h:#define MAP_FIXED 0x04 /* Interpret addr exactly */I'd be happy to say that we should not care about parisc for persistent memory. We'll just have to find a way to exclude parisc without making life too ugly.I don't think creapling mmap() interface for one arch is the right way to go. I think the interface should be universal. I may imagine MAP_DIRECT can be useful not only for persistent memory. For tmpfs instead of mlock()?On parisc we have #define MAP_SHARED 0x01 /* Share changes */ #define MAP_PRIVATE 0x02 /* Changes are private */ #define MAP_TYPE 0x03 /* Mask for type of mapping */ #define MAP_FIXED 0x04 /* Interpret addr exactly */ #define MAP_ANONYMOUS 0x10 /* don't use a file */ So, if you need a MAP_DIRECT, wouldn't e.g. #define MAP_DIRECT 0x08 be possible (for parisc, and others 0x04). And if MAP_TYPE needs to include this flag on parisc: #define MAP_TYPE (0x03 | 0x08) /* Mask for type of mapping */
The problem here is that to support new the mmap flags the arch needs to find a flag that is guaranteed to fail on older kernels. Defining MAP_DIRECT to 0x8 on parisc doesn't work because it will simply be ignored on older parisc kernels. However, it's already the case that several archs have their own sys_mmap entry points. Those archs that can't follow the common scheme (only parsic it seems) will need to add a new mmap syscall. I think that's a reasonable tradeoff to allow every other architecture to add this support with their existing mmap syscall paths. That means MAP_DIRECT should be defined to MAP_TYPE on parisc until it later defines an opt-in mechanism to a new syscall that honors MAP_DIRECT as a valid flag. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>