This is the mail archive of the
cygwin-developers
mailing list for the Cygwin project.
Re: Performance optimization in av::fixup - use buffered IO, not mapped file
On Dec 12 06:11, Eric Blake wrote:
> On 12/11/2012 08:13 PM, Daniel Colascione wrote:
> > Anyway, the binary is sparse because our linker produces sparse files.
> >
> > Would the Cygwin developers accept this patch? With it, applications would need
> > to explicitly use ftruncate to make files sparse.
>
> Eww. That would be a regression for coreutils, [...]
Really? How so?
> > Considering the horrible and
> > unexpected performance implications of sparse files, I don't think generating
> > them automatically from a sequence of seeks and writes is the right thing to do.
>
> Why can't we instead use posix_fallocate() as a means of identifying a
> file that must not be sparse, and then just patch the compiler to use
> posix_fallocate() to never generate a sparse executable (but let all
> other sparse files continue to behave as normal)?
posix_fallocate is not allowed to generate sparse files, due to the
following restriction:
"If posix_fallocate() returns successfully, subsequent writes to the
specified file data shall not fail due to the lack of free space on
the file system storage media."
See
http://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html
Therefore only ftruncate and lseek potentially generate sparse files.
On second thought, I don't quite understand what you mean by "use
posix_fallocate() as a means of identifying a file that must not be
sparse". Can you explain, please?
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat