Create new files as sparse on NT systems. (2nd try)

Christopher Faylor
Mon Feb 17 18:30:00 GMT 2003

On Mon, Feb 17, 2003 at 07:20:42PM +0100, Vaclav Haisman wrote:
>>That's nice.  Did you read the bit above where I quoted MSDN?  Merely
>>setting the file as sparse will NOT SAVE SPACE on Windows.  So, no
>>space gain, and a performance penalty of untested magnitude.  I see
>>only disadvantages.
>Oh yes, it will.  Some applications do lseek() on rather long
>distances, then write few bytes, then do another lseek() etc.  Without
>this Windows will physicaly write zeros to the file which takes time
>and space.  With this patch regions of the file between the written
>bytes are not written to the file and do not occupy any space.  Judging
>by there
>seems to be same amount of metada as in case of non-sparse file.

lseeks were what I was thinking of when I suggested just following the UNIX

Is anyone willing to run a few simple benchmarks to see if there is a
drawback to turning sparseness on for everything on an NTFS file system?

Btw, now that I've said that it occurred to me to check
GetVolumeInformation.  There is apparently a FILE_SUPPORTS_SPARSE_FILES
flag available.  That's the ultimate way to deal with this rather than
adding a wincap, I believe.  Check (pc->fs.flags &
FILE_SUPPORTS_SPARSE_FILES) in fhandler_disk_file::open and do the
appropriate thing there.

Sorry I didn't think of this before.


More information about the Cygwin-patches mailing list