On Thu, Oct 15, 2020 at 10:47:00AM +0100, Christoph Hellwig wrote:
I don't think we can solve this properly. Due to the racyness we can
always err one side. The beauty of treating all the uptodate pages
as present data is that we err on the safe side, as applications
expect holes to never have data, while "data" could always be zeroed.
I don't think that's quite accurate. Nothing prevents a dirty page from
being written back and reclaimed between acquiring the (unwritten)
mapping and doing the pagecache scan, so it's possible to present valid
data (written to the kernel prior to a seek) as a hole with the current
code.
Brian