[yocto] [PATCH] mm/msync: tweak tmpfs patch for syscall msync

Zumeng Chen zumeng.chen at windriver.com
Wed Apr 25 18:16:00 PDT 2012


于 2012年04月26日 09:15, Bruce Ashfield 写道:
> On 12-04-25 8:59 PM, Zumeng Chen wrote:
>> That was my last version, you can google to get by "msync zumeng"
>> So feel free to merge it.
>
> Sounds good, but we should still get the header updates, since the
> first version merged into the tree already.
Yes, NP, I'm OK with all changes. :)

Regards,
Zumeng
>
> Bruce
>
>>
>> Regards,
>> Zumeng
>> 于 2012年04月25日 21:47, Bruce Ashfield 写道:
>>> On 12-04-25 06:06 AM, Kang Kai wrote:
>>>> Commit 1c3ae5441 fixes MIPS CPU cache alias problem. But it makes
>>>
>>> Put a short log after the commit ID, that way we can read what the
>>> old commit was trying to do right in this commit.
>>>
>>>> posix test cases mlockall/3-6 3-7 fail.
>>>
>>> Can we expand on what the test is doing ? That way the commit
>>> header is stand alone. I know that I haven't memorized what all the
>>> posix tests do :)
>>>
>>>> Tweak the patch to:
>>>> 1 check the vma and its flags first
>>>
>>> Can you expand here as well. Do you really mean that you've moved
>>> the CONFIG_TMPFS block down in the function so that the normal
>>> vma flag checking will occur ?
>>>
>>>> 2 don't quit the function when meet first vma belongs to tmpfs file
>>>
>>> And for this part, can you (or Zumeng) explain why we used to need
>>> to exit immediately and now we don't ?
>>>
>>> The patch looks good though, thanks for looking into this tricky
>>> area of code.
>>>
>>> Cheers,
>>>
>>> Bruce
>>>
>>>>
>>>> Signed-off-by: Kang Kai<kai.kang at windriver.com>
>>>> ---
>>>> mm/msync.c | 30 +++++++++++++-----------------
>>>> 1 files changed, 13 insertions(+), 17 deletions(-)
>>>>
>>>> diff --git a/mm/msync.c b/mm/msync.c
>>>> index ced6215..31cd311 100644
>>>> --- a/mm/msync.c
>>>> +++ b/mm/msync.c
>>>> @@ -60,23 +60,6 @@ SYSCALL_DEFINE3(msync, unsigned long, start,
>>>> size_t, len, int, flags)
>>>> down_read(&mm->mmap_sem);
>>>> vma = find_vma(mm, start);
>>>>
>>>> -#ifdef CONFIG_TMPFS
>>>> - /*
>>>> - * For tmpfs, no matter which flag(ASYNC or SYNC) gets from msync,
>>>> - * there is not so much thing to do for CPUs without cache alias,
>>>> - * But for some CPUs with cache alias, msync has to flush cache
>>>> - * explicitly, which makes sure the data coherency between memory
>>>> - * file and cache.
>>>> - */
>>>> - file = vma->vm_file;
>>>> - if (file&& (file->f_op ==&shmem_file_operations)) {
>>>> - if(CPU_HAS_CACHE_ALIAS)
>>>> - flush_cache_range(vma, start, start+len);
>>>> - error = 0;
>>>> - goto out_unlock;
>>>> - }
>>>> -#endif
>>>> -
>>>> for (;;) {
>>>>
>>>> /* Still start< end. */
>>>> @@ -97,6 +80,19 @@ SYSCALL_DEFINE3(msync, unsigned long, start,
>>>> size_t, len, int, flags)
>>>> goto out_unlock;
>>>> }
>>>> file = vma->vm_file;
>>>> +#ifdef CONFIG_TMPFS
>>>> + /*
>>>> + * For tmpfs, no matter which flag(ASYNC or SYNC) gets from msync,
>>>> + * there is not so much thing to do for CPUs without cache alias,
>>>> + * But for some CPUs with cache alias, msync has to flush cache
>>>> + * explicitly, which makes sure the data coherency between memory
>>>> + * file and cache.
>>>> + */
>>>> + if (file&& (file->f_op ==&shmem_file_operations)) {
>>>> + if(CPU_HAS_CACHE_ALIAS)
>>>> + flush_cache_range(vma, start, start+len);
>>>> + }
>>>> +#endif
>>>> start = vma->vm_end;
>>>> if ((flags& MS_SYNC)&& file&&
>>>> (vma->vm_flags& VM_SHARED)) {
>>>
>>
>




More information about the yocto mailing list