2022-04-12 05:09:50

by Trond Myklebust

[permalink] [raw]
Subject: [PATCH v2 0/5] Ensure mapping errors are reported only once

From: Trond Myklebust <[email protected]>

The expectation since Linux 4.13 has been that EIO errors are always
reported in fsync(), whether or not it was detected are reported
earlier.
On the other hand, ENOSPC errors are reported as soon as detected, and
should only be reported once.

Trond Myklebust (5):
NFS: Do not report EINTR/ERESTARTSYS as mapping errors
NFS: fsync() should report filesystem errors over EINTR/ERESTARTSYS
NFS: Don't report ENOSPC write errors twice
NFS: Do not report flush errors in nfs_write_end()
NFS: Don't report errors from nfs_pageio_complete() more than once

fs/nfs/file.c | 49 ++++++++++++++++++++-----------------------------
fs/nfs/write.c | 11 ++---------
2 files changed, 22 insertions(+), 38 deletions(-)

--
2.35.1


2022-04-12 07:59:39

by Trond Myklebust

[permalink] [raw]
Subject: [PATCH v2 1/5] NFS: Do not report EINTR/ERESTARTSYS as mapping errors

From: Trond Myklebust <[email protected]>

If the attempt to flush data was interrupted due to a local signal, then
just requeue the writes back for I/O.

Fixes: 6fbda89b257f ("NFS: Replace custom error reporting mechanism with generic one")
Signed-off-by: Trond Myklebust <[email protected]>
---
fs/nfs/write.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index e864ac836237..9d3ac6edc901 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -1436,7 +1436,7 @@ static void nfs_async_write_error(struct list_head *head, int error)
while (!list_empty(head)) {
req = nfs_list_entry(head->next);
nfs_list_remove_request(req);
- if (nfs_error_is_fatal(error))
+ if (nfs_error_is_fatal_on_server(error))
nfs_write_error(req, error);
else
nfs_redirty_request(req);
--
2.35.1