du uses `st_blocks`, not `st_size`, so it should be fine for most applications. It is similar to how sparse files behave:
$ ls
$ truncate -s 1M foo
$ ls -lhp
total 0
-rw-r--r-- 1 catwell wheel 1.0M Apr 26 18:39 foo
$ du
0 .All is good then.
That seems wrong to me. It would violate the assumptions of software that does stat() on directory entries and not only verifies presence but also non-zero size.
So it's risking buggy behavior to gain a latency edge over other networked filesystems. I think smart prefetching while preserving correctness would be better.