]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
NFSD: Remove NFSERR_EAGAIN
authorChuck Lever <chuck.lever@oracle.com>
Wed, 10 Dec 2025 00:28:49 +0000 (19:28 -0500)
committerChuck Lever <chuck.lever@oracle.com>
Fri, 2 Jan 2026 18:43:41 +0000 (13:43 -0500)
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>
fs/nfs_common/common.c
fs/nfsd/nfs4proc.c
fs/nfsd/nfsd.h
include/trace/misc/nfs.h
include/uapi/linux/nfs.h

index af09aed09fd27938ed7b40e5ea0128a1a4f1600d..0778743ae2c2c26e54d4a8a1116dc57bece98432 100644 (file)
@@ -17,7 +17,6 @@ static const struct {
        { NFSERR_NOENT,         -ENOENT         },
        { NFSERR_IO,            -EIO            },
        { NFSERR_NXIO,          -ENXIO          },
-/*     { NFSERR_EAGAIN,        -EAGAIN         }, */
        { NFSERR_ACCES,         -EACCES         },
        { NFSERR_EXIST,         -EEXIST         },
        { NFSERR_XDEV,          -EXDEV          },
index 7f7e6bb23a90d9a1cafd154c0f09e236df75b083..42a6b914c0fe644feb378ac787dcccd092c326ea 100644 (file)
@@ -1506,7 +1506,7 @@ try_again:
                                        (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 50be785f1d2cef96bbcbd865c3194ab1267e321f..b0283213a8f542160b16aa057007d5f668462ef9 100644 (file)
@@ -233,7 +233,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 c82233e950ac0614d907cdc888b68f977bd7f67b..a394b4d38e18faedefa4143fac5decdf37379193 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);
@@ -52,7 +51,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 f356f2ba3814284064a54e76bae0db7ee6158882..71c7196d32817d4e5eba7b3b15b43fc2868d48b4 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 */