Thread (15 messages) 15 messages, 4 authors, 2016-09-09

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�(��
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help