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

Kang Kai Kai.Kang at windriver.com
Wed Apr 25 19:00:17 PDT 2012


On 2012年04月26日 09:16, Zumeng Chen wrote:
> 于 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. :)
Thanks.
I'll send version 2 with header updates.

>
> 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