Re: [PATCH] Sync only the requested range in msync

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/13/2014 09:31 AM, Jeff Moyer wrote:
> Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> writes:
> 
>> On Wed, 23 Apr 2014 07:11:15 -0700 Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
>>
>>> On Thu, Mar 27, 2014 at 07:02:41PM -0400, Matthew Wilcox wrote:
>>>> [untested.  posted because it keeps coming up at lsfmm/collab]
>>>>
>>>> msync() currently syncs more than POSIX requires or BSD or Solaris
>>>> implement.  It is supposed to be equivalent to fdatasync(), not fsync(),
>>>> and it is only supposed to sync the portion of the file that overlaps
>>>> the range passed to msync.
>>>>
>>>> If the VMA is non-linear, fall back to syncing the entire file, but we
>>>> still optimise to only fdatasync() the entire file, not the full fsync().
>>>>
>>>> Signed-off-by: Matthew Wilcox <matthew.r.wilcox@xxxxxxxxx>
>>>
>>> Looks good,
>>>
>>> Reviewed-by: Christoph Hellwig <hch@xxxxxx>
>>
>> I worry that if there are people who are relying on the current
>> behaviour (knowingly or not!) then this patch will put their data at
>> risk and nobody will ever know.  Until that data gets lost, that is.
>> At some level of cautiousness, this is one of those things we can never
>> fix.
>>
>> I suppose we could add an msync2() syscall with the new behaviour so
>> people can migrate over.  That would be very cheap to do.
>>
>> It's hard to know what's the right thing to do here.
> 
> FWIW, I think we should apply the patch.  Anyone using the API properly
> will not get the desired result, and it could have a negative impact on
> performance.  The man page is very explicit on what you should expect,
> here.  Anyone relying on undocumented behavior gets to keep both pieces
> when it breaks.  That said, I do understand your viewpoint, Andrew,
> especially since it's so hard to get people to sync their data at all,
> much less correctly.
> 
> Acked-by: Jeff Moyer <jmoyer@xxxxxxxxxx>

Maybe we can talk someone with all of linux in a repository to grep for
msync calls that even specify a range at all?

Eric did this for 64 bit inodes a few years ago, and it wouldn't hurt to
have a little data on how common this is.

I think for msync the list will be much shorter and easier to audit.

-chris

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]