[PATCH] D42925: Call FlushFileBuffers on readwrite file mappings.
Reid Kleckner via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 5 15:41:34 PST 2018
rnk accepted this revision.
rnk added a comment.
This revision is now accepted and ready to land.
In https://reviews.llvm.org/D42925#998357, @zturner wrote:
> In https://reviews.llvm.org/D42925#998354, @rnk wrote:
>
> > One concern I have is that this is a common pattern on Linux:
> >
> > int fd = open(...);
> > void *mem = mmap(fd, ...);
> > close(fd);
> > // use mem
> >
> >
> > Are we reasonably confident that LLVM doesn't have this pattern anywhere in it? i.e. we never store the FD and then try to use it after closing it?
>
>
> We don't do that anywhere *at the moment* that I can find, but I suppose it's a concern for future proofing this code. Someone could come along and add code like this after the fact. Currently the only place where we open a `mapped_file_region` for readwrite is in `OnDiskBuffer`, which stores a `TempFile` and then renames it atomically to the final path. We could put the flush logic inside of `TempFile::keep()` so that it flushes it before renaming. That might be a better option, although it wouldn't catch the case where someone comes along later and tries to use a `mapped_file_region` for something else. Perhaps it's ok for the time being though?
It's probably fine. I tried to look for this pattern, but got lazy and punted it to you.
https://reviews.llvm.org/D42925
More information about the llvm-commits
mailing list