From: "Li Xinhai" <lixinhai.lxh@gmail.com>
To: "Mike Kravetz" <mike.kravetz@oracle.com>,
"John Hubbard" <jhubbard@nvidia.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"Linux API" <linux-api@vger.kernel.org>
Cc: akpm <akpm@linux-foundation.org>
Subject: Re: [PATCH] mm: introduce MAP_FIXED_HUGETLB_LEN to mmap()
Date: Sun, 29 Mar 2020 11:20:30 +0800 [thread overview]
Message-ID: <2020032911202894721456@gmail.com> (raw)
In-Reply-To: 2020032810195804815050@gmail.com
On 2020-03-28 at 10:19 Li Xinhai wrote:
>On 2020-03-28 at 09:31 Mike Kravetz wrote:
>>On 3/27/20 12:12 PM, John Hubbard wrote:
>>> On 3/27/20 5:59 AM, Li Xinhai wrote:
>>>> The purpose of MAP_FIXED_HUGETLB_LEN is to check whether the parameter
>>>> length is valid or not according to the target file's huge page size.
>>>> When it is used, if length is not aligned to underlying huge page size,
>>>> mmap() is failed with errno set to EINVAL. When it is not used, the
>>>> current semantic is maintained, i.e., length is round up to underlying
>>>> huge page size.
>>>>
>>>> In current code, the vma related call, except mmap, are all consider
>>>> not correctly aligned length as invalid parameter, including mprotect,
>>>> munmap, mlock, etc., by checking through hugetlb_vm_op_split. So, user
>>>> will see failure, after successfully call mmap, although using same
>>>> length parameter to other mapping syscall.
>>>>
>>>> With MAP_FIXED_HUGETLB_LEN, user can choose to check if length is
>>>> correctly aligned at first place when call mmap, instead of failure after
>>>> mapping has been created.
>>>
>>> Hi Li,
>>>
>>> This is not worth creating a new MAP_ flag. If you look at the existing flags
>>> you will see that they are both limited and carefully chosen, so as to cover
>>> a reasonable chunk of functionality per flag. We don't just drop in a flag
>>> for tiny corner cases like this one.
>>>
>>> btw, remember that user API changes require man pages updates as well. And
>>> that the API has to be supported forever. And that if we use up valuable
>>> flag slots on trivia then we'll run out of flags quite soon, and won't be
>>> able to do broader, more important upgrades.
>>>
>>> Also, we need to include a user space API mailing list for things that
>>> affect that. Adding them now: Linux API <linux-api@vger.kernel.org>
>>> The man pages mailing list will also be needed if we go there.
>>>
>>> Let's take a closer look at your problem and see what it takes to solve it.
>>> If we need some sort of flag to mmap() or other routines, fine. But so far,
>>> I can see at least two solutions that are much easier:
>>
>>I too question the motivation for this patch. Is it simply to eliminate some
>>of the hugetlb special behavior and make it behave more like the rest of mm?
>>
>>> Solution idea #2: just do the length check unconditionally here (without looking
>>> at a new flag), and return an error if it is not aligned. And same thing for the
>>> MAP_HUGETLB case below. And delete the "len = ALIGN(len, huge_page_size(hs));" in
>>> both cases.
>>>
>>> That would still require a man page update, and consensus that it won't Break
>>> The World, but it's possible (I really don't know) that this is a more common
>>> and desirable behavior.
>>>
>>> Let's see if anyone else weighs in about this.
>>
>>That certainly would be the easiest thing to do. However, I'm guessing
>>the current behavior was added when hugetlb mmap support was added.
>
>>There is no telling how many applications might break if we change the behavior.
>>I'm guessing this is the reason Li chose to only change the behavior if
>>a new flag was specified.
>Yes, I was considering this change would break something.
>
It's better to have a new patch which don't introduce new flag, and I attached
statements from the kernel document.
https://lore.kernel.org/linux-api/1585451295-22302-1-git-send-email-lixinhai.lxh@gmail.com/
Let's have further check, thanks!
>>--
>>Mike Kravetz
next prev parent reply other threads:[~2020-03-29 3:20 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1585313944-8627-1-git-send-email-lixinhai.lxh@gmail.com>
2020-03-27 19:12 ` [PATCH] mm: introduce MAP_FIXED_HUGETLB_LEN to mmap() John Hubbard
2020-03-28 1:31 ` Mike Kravetz
2020-03-28 2:19 ` Li Xinhai
2020-03-29 3:20 ` Li Xinhai [this message]
2020-03-28 2:14 ` Li Xinhai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2020032911202894721456@gmail.com \
--to=lixinhai.lxh@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=jhubbard@nvidia.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mike.kravetz@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).