On 3/8/07, Eric Dumazet <dada1@xxxxxxxxxxxxx> wrote:Nothing in the manuals says that write() on same fd should be non racy : In
particular file pos might be undefined. There is a reason pwrite() exists.
Kernel doesnt have to enforce thread safety as standard is quite clear.
I know the standard _allows_ us to crash and burn (well, corrupt
f_pos) when two threads race on an fd, but why would we want to?
Wouldn't it be better to do something at least slightly sane, like add
atomically to f_pos the expected number of number of bytes written,
then do the write, then fix it up (again atomically) if vfs_write
returns an unexpected pos?
mm/filemap.c
Only O_APPEND case is specially handled (and NFS might fail to handle this
case correctly)
Is it? How?