在 2022/4/12 22:27, Trond Myklebust 写道:
It will clear ENOSPC, EDQUOT and EFBIG. It should not clear other
errors that are not supposed to be reported by write().
As I keep repeating, that is _documented behaviour_!
Hi Trond:
You may mean that write(2) manpage described:
Since Linux 4.13, errors from write-back come with a promise that
they may be reported by subsequent. write(2) requests, and will be
reported by a subsequent fsync(2) (whether or not they were also
reported by write(2)).
The manpage mentioned that "reported by a subsequent fsync(2)", your patch[1] clear the wb err on _async_ write(), and wb err will _not_ be reported by subsequent fsync(2), is it documented behaviour?
All other filesystems will _not_ clear any wb err on _async_ write().
[1] https://patchwork.kernel.org/project/linux-nfs/patch/20220411213346.762302-4-trondmy@xxxxxxxxxx/
On some filesystems, including NFS, it does not even guarantee that
space has successfully been reserved for the data. In this case, some
errors might be delayed until a future write(2), fsync(2), or even
close(2). The only way to be sure is to call fsync(2) after you are
done writing all your data.