Re: [PATCH -next,v2] NFS: report and clear ENOSPC/EFBIG/EDQUOT writeback error on close() file

From: chenxiaosong (A)
Date: Tue Jun 14 2022 - 21:34:39 EST


在 2022/6/15 3:48, Trond Myklebust 写道:
NACK. How many times do I have to repeat that we do NOT clear the error
log in flush()?


close(2) manpage described:

ENOSPC, EDQUOT: On NFS, these errors are not normally reported
against the first write which exceeds the available storage space,
but instead against a subsequent write(2), fsync(2), or close(2).

A careful programmer will check the return value of close(), since
it is quite possible that errors on a previous write(2) operation are
reported only on the final close() that releases the open file
description. Failing to check the return value when closing a file
may lead to silent loss of data. This can especially be observed with NFS and with disk quota.

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)).

Both close(2) and write(2) manpage described: report writeback error (not clear error), especially the write(2) manpage described: will be reported by a subsequent fsync(2) whether or not they were also reported by write(2).

If ENOSPC/EFBIG/EDQUOT writeback error can be cleared on write(), maybe it is better to be cleared on close() instead of saving the error for next open().