Re: [PATCH v4 RESEND 0/2] Align mmap address for DAX pmd mappings
From: Kani, Toshimitsu <hidden>
Date: 2016-08-29 22:00:43
Also in:
linux-fsdevel, lkml, nvdimm
On Mon, 2016-08-29 at 15:31 -0600, Kani, Toshimitsu wrote:
On Mon, 2016-08-29 at 23:48 +0300, Kirill A. Shutemov wrote:quoted
On Mon, Aug 29, 2016 at 01:11:19PM -0600, Toshi Kani wrote:quoted
When CONFIG_FS_DAX_PMD is set, DAX supports mmap() using pmd page size. This feature relies on both mmap virtual address and FS block (i.e. physical address) to be aligned by the pmd page size. Users can use mkfs options to specify FS to align block allocations. However, aligning mmap address requires code changes to existing applications for providing a pmd-aligned address to mmap(). For instance, fio with "ioengine=mmap" performs I/Os with mmap() [1]. It calls mmap() with a NULL address, which needs to be changed to provide a pmd-aligned address for testing with DAX pmd mappings. Changing all applications that call mmap() with NULL is undesirable. This patch-set extends filesystems to align an mmap address for a DAX file so that unmodified applications can use DAX pmd mappings.+Hugh Can we get it used for shmem/tmpfs too? I don't think we should duplicate essentially the same functionality in multiple places.Here is my brief analysis when I had looked at the Hugh's patch last time (before shmem_get_unmapped_area() was accepted). https://patchwork.kernel.org/patch/8916741/ Besides some differences in the logic, ex. shmem_get_unmapped_area() always calls current->mm->get_unmapped_area twice, yes, they basically provide the same functionality. I think one issue is that shmem_get_unmapped_area() checks with its static flag 'shmem_huge', and additinally deals with SHMEM_HUGE_DENY and SHMEM_HUGE_FORCE cases. It also handles non-file case for !SHMEM_HUGE_FORCE.
Looking further, these shmem_huge handlings only check pre-conditions.
So, we should be able to make shmem_get_unmapped_area() as a wrapper,
which checks such shmem-specific conitions, and then
call __thp_get_unmapped_area() for the actual work. All DAX-specific
checks are performed in thp_get_unmapped_area() as well. We can make
__thp_get_unmapped_area() as a common function.
I'd prefer to make such change as a separate item, but I can include it
to this patch series if needed.
Thanks,
-Toshi
��칻
�&ޱ��jg���
�+a�{.n�+����{��h����ܭ�f���h��/i�(�h�j+z)ߢ�ˊ{�0�
zm���� b��f����:'�隊V����j)m��'�K�rJ+�隊Y/i�(��