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

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

 



On Tue, 13 May 2014 09:31:01 -0400 Jeff Moyer <jmoyer@xxxxxxxxxx> 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>
> 

Sigh, OK, scary.  And I don't see a sane way in which we can do
WARN_ON_ONCE("hey dummy this doesn't do what you think it does").

Matthew, I checked the arith carefully and it looks OK, but would be
more comfortable if you could find a way of testing it please?  Try
this dirty trick:


	if (!strcmp(current->comm, "my-test-app")) {
		char buf[100];

		sprintf(buf, "kernel: %llu->%llu\n", fstart, fend);
		sys_write(1, buf, strlen(buf));
	}

so your debug info nicely appears on my-test-app's (fflushed) stdout ;)

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