Re: [RFC PATCH] fs: introduce ST_HUGE flag and set it to tmpfs and hugetlbfs

From: Yang Shi
Date: Wed Apr 18 2018 - 16:53:49 EST




On 4/18/18 1:26 PM, Mike Kravetz wrote:
On 04/17/2018 02:08 PM, Yang Shi wrote:
And, set the flag for hugetlbfs as well to keep the consistency, and the
applications don't have to know what filesystem is used to use huge
page, just need to check ST_HUGE flag.
For hugetlbfs, setting such a flag would be for consistency only. mapping
hugetlbfs files REQUIRES huge page alignment and size.

Yes, applications don't have to read this flag if the underlying filesystem is hugetlbfs. The fs magic number is good enough.


If an application would want to take advantage of this flag for tmpfs, it
needs to map at a fixed address (MAP_FIXED) for huge page alignment. So,
it will need to do one of the 'mmap tricks' to get a mapping at a suitably
aligned address.

It doesn't have to be MAP_FIXED, but definitely has to be huge page aligned. This flag is aimed for this case. With this flag, the applications can know the underlying tmpfs with huge page supported, then the applications can mmap memory with huge page alignment intentionally.


IIRC, there is code to 'suitably align' DAX mappings to appropriate huge page
boundaries. Perhaps, something like this could be added for tmpfs mounted
with huge=? Of course, this would not take into account 'length' but may
help some.

Might be. However THP already exported huge page size to sysfs, the applications can read it to get the alignment.

Thanks,
Yang