On Tue, Mar 22, 2016 at 4:01 PM, Andrei Borzenkov
22.03.2016 22:38, Greg Freemyer пишет:
The one I best understand is ntfsfallocate.
Basically the issue is NTFS-3G provides a non-backward compatible feature.
With fallocate in general you can allocate large files that you can latter fill in. Often done for the virtual disk in a VM as an example. In a matter of seconds you can allocate data blocks for a 100GB file. By doing it that way you reduce fragmentation, and also only take a relatively short period of time to create the file. (Who wants to wait minutes for a 100GB file to be zero-filled).
ntfsfallocate allows that same behavior with the NTFS filesystem. The NTFS-3G driver in turn understands what is going on and can work with the file as data is later written to the allocated blocks.
Windows on the other hand does not understand the data structure layout created by ntfsfallocate, and thus it can cause a problem.
I wonder - NTFS supports sparse files; what ntfsfallocate does that cannot be mapped to it?
A sparse file has unallocated holes. fallocate can of course create sparse files, but I believe the issue has to do with allocated data blocks which have never been written to. I don't know what the issue is, but assume for a second NTFS wrote a CRC header for every data block. If a data block were allocated, but not written to, then that block would be in an inconsistent state with an invalid CRC that Windows might refuse to work with. Thus it seems some flag or data value is updated only when the data in a data block is written. Greg -- Greg Freemyer www.IntelligentAvatar.net -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org