]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
NFS: improve "Server wrote zero bytes" error
authorOlga Kornievskaia <okorniev@redhat.com>
Fri, 20 Feb 2026 21:42:18 +0000 (16:42 -0500)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 13 Apr 2026 18:17:31 +0000 (11:17 -0700)
When a pnfs error occurs, the IO is retried against the MDS. However,
the initial IO leads to the kernel logging "Serer wrote zero bytes"
when in fact the MDS IO will not fail and thus the error misleads
administrators that the system is experiencing issues.

When pnfs IO fails which triggers pnfs_write_done_resent_to_mds() which
would end up clearing nfs_pgio_header's pages structure (copying the
content into a new one to do new RPC calls to the MDS). Thus,
in nfs_writeback_result() when we have no pages to work with no need
to try and also therefore skip logging the message about 0bytes.

Fixes: 6c75dc0d498c ("NFS: merge _full and _partial write rpc_ops")
Suggested-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Olga Kornievskaia <okorniev@redhat.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/write.c

index 1ed4b3590b1ac8fc361fff6cc4b33e299f11389f..f1f62787dd7440fb7158ae2b5e6a0cadbe671f91 100644 (file)
@@ -1551,7 +1551,7 @@ static void nfs_writeback_result(struct rpc_task *task,
        struct nfs_pgio_args    *argp = &hdr->args;
        struct nfs_pgio_res     *resp = &hdr->res;
 
-       if (resp->count < argp->count) {
+       if (resp->count < argp->count && !list_empty(&hdr->pages)) {
                static unsigned long    complain;
 
                /* This a short write! */