]> 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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 17 Jan 2026 15:35:10 +0000 (16:35 +0100)
commit c6c209ceb87f64a6ceebe61761951dcbbf4a0baa upstream.

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: 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 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 191cbf9320c0fb51763c47b0345ebd1e9a4bc6e0..8cecccdaf9ee5b1eef93e39f60144b401ec6ed6d 100644 (file)
@@ -232,7 +232,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 */