The process you list will badly fragment the file on disk, destroying performance (unless you re re-writing the entire file, in which case just writing a temporary file and renaming it will work)
It's also not clear that this is what the original poster was looking for when he said "Linux devs should really provide a proper solution (like O_ATOMIC) instead of blaming app devs for not doing the impossible."
I've been trying to make two points in this thread
1. it's not obvious what the "proper solution" that the kernel should provide looks like
2. it's not impossible to do this today (since there are many classes of programs that do this)