]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
NFSD: Remove NFSERR_EAGAIN
authorChuck Lever <chuck.lever@oracle.com>
Mon, 12 Jan 2026 14:49:39 +0000 (09:49 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jan 2026 12:10:18 +0000 (13:10 +0100)
[ Upstream commit c6c209ceb87f64a6ceebe61761951dcbbf4a0baa ]

I haven't found an NFSERR_EAGAIN in RFCs 1094, 1813, 7530, or 8881.
None of these RFCs have an NFS status code that match the numeric
value "11".

Based on the meaning of the EAGAIN errno, I presume the use of this
status in NFSD means NFS4ERR_DELAY. So replace the one usage of
nfserr_eagain, and remove it from NFSD's NFS status conversion
tables.

As far as I can tell, NFSERR_EAGAIN has existed since the pre-git
era, but was not actually used by any code until commit f4e44b393389
("NFSD: delay unmount source's export after inter-server copy
completed."), at which time it become possible for NFSD to return
a status code of 11 (which is not valid NFS protocol).

Fixes: f4e44b393389 ("NFSD: delay unmount source's export after inter-server copy completed.")
Cc: stable@vger.kernel.org
Reviewed-by: NeilBrown <neil@brown.name>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/nfs_common/common.c
fs/nfsd/nfs4proc.c
fs/nfsd/nfsd.h
include/trace/misc/nfs.h
include/uapi/linux/nfs.h

index a4ee95da2174e1e497fac676034e37589d1b95a6..5cb0781e918f7c3bcf4bd587877a5cf7a8f64e1b 100644 (file)
@@ -16,7 +16,6 @@ static const struct {
        { NFSERR_NOENT,         -ENOENT         },
        { NFSERR_IO,            -errno_NFSERR_IO},
        { NFSERR_NXIO,          -ENXIO          },
-/*     { NFSERR_EAGAIN,        -EAGAIN         }, */
        { NFSERR_ACCES,         -EACCES         },
        { NFSERR_EXIST,         -EEXIST         },
        { NFSERR_XDEV,          -EXDEV          },
index 58099c9621373c54c3e005a1c103191647073767..2d6e88f3370bf1a6db7be14abc2fd754eca98dd9 100644 (file)
@@ -1322,7 +1322,7 @@ try_again:
                                        (freezable_schedule_timeout(20*HZ) == 0)) {
                                finish_wait(&nn->nfsd_ssc_waitq, &wait);
                                kfree(work);
-                               return nfserr_eagain;
+                               return nfserr_jukebox;
                        }
                        finish_wait(&nn->nfsd_ssc_waitq, &wait);
                        goto try_again;
index 996f3f62335b257efd3f8f610621a3ae71b2f868..1116e5fcddc547182c7338d4493bc1f2f794033a 100644 (file)
@@ -201,7 +201,6 @@ void                nfsd_lockd_shutdown(void);
 #define        nfserr_noent            cpu_to_be32(NFSERR_NOENT)
 #define        nfserr_io               cpu_to_be32(NFSERR_IO)
 #define        nfserr_nxio             cpu_to_be32(NFSERR_NXIO)
-#define        nfserr_eagain           cpu_to_be32(NFSERR_EAGAIN)
 #define        nfserr_acces            cpu_to_be32(NFSERR_ACCES)
 #define        nfserr_exist            cpu_to_be32(NFSERR_EXIST)
 #define        nfserr_xdev             cpu_to_be32(NFSERR_XDEV)
index 5b6c36fe9cdfe6929c0dcd737e942081fc067ce7..7d336ba1c34f7974ba47c7deb4e3cc5c1b92d49b 100644 (file)
@@ -16,7 +16,6 @@ TRACE_DEFINE_ENUM(NFSERR_PERM);
 TRACE_DEFINE_ENUM(NFSERR_NOENT);
 TRACE_DEFINE_ENUM(NFSERR_IO);
 TRACE_DEFINE_ENUM(NFSERR_NXIO);
-TRACE_DEFINE_ENUM(NFSERR_EAGAIN);
 TRACE_DEFINE_ENUM(NFSERR_ACCES);
 TRACE_DEFINE_ENUM(NFSERR_EXIST);
 TRACE_DEFINE_ENUM(NFSERR_XDEV);
@@ -53,7 +52,6 @@ TRACE_DEFINE_ENUM(NFSERR_JUKEBOX);
                { NFSERR_NXIO,                  "NXIO" }, \
                { ECHILD,                       "CHILD" }, \
                { ETIMEDOUT,                    "TIMEDOUT" }, \
-               { NFSERR_EAGAIN,                "AGAIN" }, \
                { NFSERR_ACCES,                 "ACCES" }, \
                { NFSERR_EXIST,                 "EXIST" }, \
                { NFSERR_XDEV,                  "XDEV" }, \
index 946cb62d64b0b87805e9ae0e4ff4cafb40335d5b..5dc726070b511e52a1ceae4504697c4f893d0485 100644 (file)
@@ -49,7 +49,6 @@
        NFSERR_NOENT = 2,               /* v2 v3 v4 */
        NFSERR_IO = 5,                  /* v2 v3 v4 */
        NFSERR_NXIO = 6,                /* v2 v3 v4 */
-       NFSERR_EAGAIN = 11,             /* v2 v3 */
        NFSERR_ACCES = 13,              /* v2 v3 v4 */
        NFSERR_EXIST = 17,              /* v2 v3 v4 */
        NFSERR_XDEV = 18,               /*    v3 v4 */