From: Jeff Layton <jlayton@kernel.org>
To: Mike Snitzer <snitzer@kernel.org>, linux-nfs@vger.kernel.org
Cc: Chuck Lever <chuck.lever@oracle.com>,
Anna Schumaker <anna@kernel.org>,
Trond Myklebust <trondmy@hammerspace.com>,
NeilBrown <neilb@suse.de>,
linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH v14 01/25] nfs_common: factor out nfs_errtbl and nfs_stat_to_errno
Date: Thu, 29 Aug 2024 10:17:27 -0400 [thread overview]
Message-ID: <251afa885bf38e0d819d64f8fc24fbddfd7b57ec.camel@kernel.org> (raw)
In-Reply-To: <20240829010424.83693-2-snitzer@kernel.org>
On Wed, 2024-08-28 at 21:03 -0400, Mike Snitzer wrote:
> Common nfs_stat_to_errno() is used by both fs/nfs/nfs2xdr.c and
> fs/nfs/nfs3xdr.c
>
> Will also be used by fs/nfsd/localio.c
>
> Signed-off-by: Mike Snitzer <snitzer@kernel.org>
> ---
> fs/nfs/Kconfig | 1 +
> fs/nfs/nfs2xdr.c | 70 +-----------------------
> fs/nfs/nfs3xdr.c | 108 +++++++----------------------------
> --
> fs/nfs/nfs4xdr.c | 4 +-
> fs/nfs_common/Makefile | 2 +
> fs/nfs_common/common.c | 67 +++++++++++++++++++++++
> fs/nfsd/Kconfig | 1 +
> include/linux/nfs_common.h | 16 ++++++
> 8 files changed, 109 insertions(+), 160 deletions(-)
> create mode 100644 fs/nfs_common/common.c
> create mode 100644 include/linux/nfs_common.h
>
> diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig
> index 57249f040dfc..0eb20012792f 100644
> --- a/fs/nfs/Kconfig
> +++ b/fs/nfs/Kconfig
> @@ -4,6 +4,7 @@ config NFS_FS
> depends on INET && FILE_LOCKING && MULTIUSER
> select LOCKD
> select SUNRPC
> + select NFS_COMMON
> select NFS_ACL_SUPPORT if NFS_V3_ACL
> help
> Choose Y here if you want to access files residing on
> other
> diff --git a/fs/nfs/nfs2xdr.c b/fs/nfs/nfs2xdr.c
> index c19093814296..6e75c6c2d234 100644
> --- a/fs/nfs/nfs2xdr.c
> +++ b/fs/nfs/nfs2xdr.c
> @@ -22,14 +22,12 @@
> #include <linux/nfs.h>
> #include <linux/nfs2.h>
> #include <linux/nfs_fs.h>
> +#include <linux/nfs_common.h>
> #include "nfstrace.h"
> #include "internal.h"
>
> #define NFSDBG_FACILITY NFSDBG_XDR
>
> -/* Mapping from NFS error code to "errno" error code. */
> -#define errno_NFSERR_IO EIO
> -
> /*
> * Declare the space requirements for NFS arguments and replies as
> * number of 32bit-words
> @@ -64,8 +62,6 @@
> #define NFS_readdirres_sz (1+NFS_pagepad_sz)
> #define NFS_statfsres_sz (1+NFS_info_sz)
>
> -static int nfs_stat_to_errno(enum nfs_stat);
> -
> /*
> * Encode/decode NFSv2 basic data types
> *
> @@ -1054,70 +1050,6 @@ static int nfs2_xdr_dec_statfsres(struct
> rpc_rqst *req, struct xdr_stream *xdr,
> return nfs_stat_to_errno(status);
> }
>
> -
> -/*
> - * We need to translate between nfs status return values and
> - * the local errno values which may not be the same.
> - */
> -static const struct {
> - int stat;
> - int errno;
> -} nfs_errtbl[] = {
> - { NFS_OK, 0 },
> - { NFSERR_PERM, -EPERM },
> - { NFSERR_NOENT, -ENOENT },
> - { NFSERR_IO, -errno_NFSERR_IO},
> - { NFSERR_NXIO, -ENXIO },
> -/* { NFSERR_EAGAIN, -EAGAIN }, */
> - { NFSERR_ACCES, -EACCES },
> - { NFSERR_EXIST, -EEXIST },
> - { NFSERR_XDEV, -EXDEV },
> - { NFSERR_NODEV, -ENODEV },
> - { NFSERR_NOTDIR, -ENOTDIR },
> - { NFSERR_ISDIR, -EISDIR },
> - { NFSERR_INVAL, -EINVAL },
> - { NFSERR_FBIG, -EFBIG },
> - { NFSERR_NOSPC, -ENOSPC },
> - { NFSERR_ROFS, -EROFS },
> - { NFSERR_MLINK, -EMLINK },
> - { NFSERR_NAMETOOLONG, -ENAMETOOLONG },
> - { NFSERR_NOTEMPTY, -ENOTEMPTY },
> - { NFSERR_DQUOT, -EDQUOT },
> - { NFSERR_STALE, -ESTALE },
> - { NFSERR_REMOTE, -EREMOTE },
> -#ifdef EWFLUSH
> - { NFSERR_WFLUSH, -EWFLUSH },
> -#endif
> - { NFSERR_BADHANDLE, -EBADHANDLE },
> - { NFSERR_NOT_SYNC, -ENOTSYNC },
> - { NFSERR_BAD_COOKIE, -EBADCOOKIE },
> - { NFSERR_NOTSUPP, -ENOTSUPP },
> - { NFSERR_TOOSMALL, -ETOOSMALL },
> - { NFSERR_SERVERFAULT, -EREMOTEIO },
> - { NFSERR_BADTYPE, -EBADTYPE },
> - { NFSERR_JUKEBOX, -EJUKEBOX },
> - { -1, -EIO }
> -};
> -
> -/**
> - * nfs_stat_to_errno - convert an NFS status code to a local errno
> - * @status: NFS status code to convert
> - *
> - * Returns a local errno value, or -EIO if the NFS status code is
> - * not recognized. This function is used jointly by NFSv2 and
> NFSv3.
> - */
> -static int nfs_stat_to_errno(enum nfs_stat status)
> -{
> - int i;
> -
> - for (i = 0; nfs_errtbl[i].stat != -1; i++) {
> - if (nfs_errtbl[i].stat == (int)status)
> - return nfs_errtbl[i].errno;
> - }
> - dprintk("NFS: Unrecognized nfs status value: %u\n", status);
> - return nfs_errtbl[i].errno;
> -}
> -
> #define PROC(proc, argtype, restype,
> timer) \
> [NFSPROC_##proc] =
> { \
> .p_proc =
> NFSPROC_##proc, \
> diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c
> index 60f032be805a..4ae01c10b7e2 100644
> --- a/fs/nfs/nfs3xdr.c
> +++ b/fs/nfs/nfs3xdr.c
> @@ -21,14 +21,13 @@
> #include <linux/nfs3.h>
> #include <linux/nfs_fs.h>
> #include <linux/nfsacl.h>
> +#include <linux/nfs_common.h>
> +
> #include "nfstrace.h"
> #include "internal.h"
>
> #define NFSDBG_FACILITY NFSDBG_XDR
>
> -/* Mapping from NFS error code to "errno" error code. */
> -#define errno_NFSERR_IO EIO
> -
> /*
> * Declare the space requirements for NFS arguments and replies as
> * number of 32bit-words
> @@ -91,8 +90,6 @@
> NFS3_pagepad_sz)
> #define ACL3_setaclres_sz (1+NFS3_post_op_attr_sz)
>
> -static int nfs3_stat_to_errno(enum nfs_stat);
> -
> /*
> * Map file type to S_IFMT bits
> */
> @@ -1406,7 +1403,7 @@ static int nfs3_xdr_dec_getattr3res(struct
> rpc_rqst *req,
> out:
> return error;
> out_default:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -1445,7 +1442,7 @@ static int nfs3_xdr_dec_setattr3res(struct
> rpc_rqst *req,
> out:
> return error;
> out_status:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -1495,7 +1492,7 @@ static int nfs3_xdr_dec_lookup3res(struct
> rpc_rqst *req,
> error = decode_post_op_attr(xdr, result->dir_attr, userns);
> if (unlikely(error))
> goto out;
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -1537,7 +1534,7 @@ static int nfs3_xdr_dec_access3res(struct
> rpc_rqst *req,
> out:
> return error;
> out_default:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -1578,7 +1575,7 @@ static int nfs3_xdr_dec_readlink3res(struct
> rpc_rqst *req,
> out:
> return error;
> out_default:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -1658,7 +1655,7 @@ static int nfs3_xdr_dec_read3res(struct
> rpc_rqst *req, struct xdr_stream *xdr,
> out:
> return error;
> out_status:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -1728,7 +1725,7 @@ static int nfs3_xdr_dec_write3res(struct
> rpc_rqst *req, struct xdr_stream *xdr,
> out:
> return error;
> out_status:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -1795,7 +1792,7 @@ static int nfs3_xdr_dec_create3res(struct
> rpc_rqst *req,
> error = decode_wcc_data(xdr, result->dir_attr, userns);
> if (unlikely(error))
> goto out;
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -1835,7 +1832,7 @@ static int nfs3_xdr_dec_remove3res(struct
> rpc_rqst *req,
> out:
> return error;
> out_status:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -1881,7 +1878,7 @@ static int nfs3_xdr_dec_rename3res(struct
> rpc_rqst *req,
> out:
> return error;
> out_status:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -1926,7 +1923,7 @@ static int nfs3_xdr_dec_link3res(struct
> rpc_rqst *req, struct xdr_stream *xdr,
> out:
> return error;
> out_status:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /**
> @@ -2101,7 +2098,7 @@ static int nfs3_xdr_dec_readdir3res(struct
> rpc_rqst *req,
> error = decode_post_op_attr(xdr, result->dir_attr,
> rpc_rqst_userns(req));
> if (unlikely(error))
> goto out;
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -2167,7 +2164,7 @@ static int nfs3_xdr_dec_fsstat3res(struct
> rpc_rqst *req,
> out:
> return error;
> out_status:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -2243,7 +2240,7 @@ static int nfs3_xdr_dec_fsinfo3res(struct
> rpc_rqst *req,
> out:
> return error;
> out_status:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -2304,7 +2301,7 @@ static int nfs3_xdr_dec_pathconf3res(struct
> rpc_rqst *req,
> out:
> return error;
> out_status:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> /*
> @@ -2350,7 +2347,7 @@ static int nfs3_xdr_dec_commit3res(struct
> rpc_rqst *req,
> out:
> return error;
> out_status:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> #ifdef CONFIG_NFS_V3_ACL
> @@ -2416,7 +2413,7 @@ static int nfs3_xdr_dec_getacl3res(struct
> rpc_rqst *req,
> out:
> return error;
> out_default:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> static int nfs3_xdr_dec_setacl3res(struct rpc_rqst *req,
> @@ -2435,76 +2432,11 @@ static int nfs3_xdr_dec_setacl3res(struct
> rpc_rqst *req,
> out:
> return error;
> out_default:
> - return nfs3_stat_to_errno(status);
> + return nfs_stat_to_errno(status);
> }
>
> #endif /* CONFIG_NFS_V3_ACL */
>
> -
> -/*
> - * We need to translate between nfs status return values and
> - * the local errno values which may not be the same.
> - */
> -static const struct {
> - int stat;
> - int errno;
> -} nfs_errtbl[] = {
> - { NFS_OK, 0 },
> - { NFSERR_PERM, -EPERM },
> - { NFSERR_NOENT, -ENOENT },
> - { NFSERR_IO, -errno_NFSERR_IO},
> - { NFSERR_NXIO, -ENXIO },
> -/* { NFSERR_EAGAIN, -EAGAIN }, */
> - { NFSERR_ACCES, -EACCES },
> - { NFSERR_EXIST, -EEXIST },
> - { NFSERR_XDEV, -EXDEV },
> - { NFSERR_NODEV, -ENODEV },
> - { NFSERR_NOTDIR, -ENOTDIR },
> - { NFSERR_ISDIR, -EISDIR },
> - { NFSERR_INVAL, -EINVAL },
> - { NFSERR_FBIG, -EFBIG },
> - { NFSERR_NOSPC, -ENOSPC },
> - { NFSERR_ROFS, -EROFS },
> - { NFSERR_MLINK, -EMLINK },
> - { NFSERR_NAMETOOLONG, -ENAMETOOLONG },
> - { NFSERR_NOTEMPTY, -ENOTEMPTY },
> - { NFSERR_DQUOT, -EDQUOT },
> - { NFSERR_STALE, -ESTALE },
> - { NFSERR_REMOTE, -EREMOTE },
> -#ifdef EWFLUSH
> - { NFSERR_WFLUSH, -EWFLUSH },
> -#endif
> - { NFSERR_BADHANDLE, -EBADHANDLE },
> - { NFSERR_NOT_SYNC, -ENOTSYNC },
> - { NFSERR_BAD_COOKIE, -EBADCOOKIE },
> - { NFSERR_NOTSUPP, -ENOTSUPP },
> - { NFSERR_TOOSMALL, -ETOOSMALL },
> - { NFSERR_SERVERFAULT, -EREMOTEIO },
> - { NFSERR_BADTYPE, -EBADTYPE },
> - { NFSERR_JUKEBOX, -EJUKEBOX },
> - { -1, -EIO }
> -};
> -
> -/**
> - * nfs3_stat_to_errno - convert an NFS status code to a local errno
> - * @status: NFS status code to convert
> - *
> - * Returns a local errno value, or -EIO if the NFS status code is
> - * not recognized. This function is used jointly by NFSv2 and
> NFSv3.
> - */
> -static int nfs3_stat_to_errno(enum nfs_stat status)
> -{
> - int i;
> -
> - for (i = 0; nfs_errtbl[i].stat != -1; i++) {
> - if (nfs_errtbl[i].stat == (int)status)
> - return nfs_errtbl[i].errno;
> - }
> - dprintk("NFS: Unrecognized nfs status value: %u\n", status);
> - return nfs_errtbl[i].errno;
> -}
> -
> -
> #define PROC(proc, argtype, restype,
> timer) \
> [NFS3PROC_##proc] =
> { \
> .p_proc =
> NFS3PROC_##proc, \
> diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
> index 7704a4509676..b4091af1a60d 100644
> --- a/fs/nfs/nfs4xdr.c
> +++ b/fs/nfs/nfs4xdr.c
> @@ -52,6 +52,7 @@
> #include <linux/nfs.h>
> #include <linux/nfs4.h>
> #include <linux/nfs_fs.h>
> +#include <linux/nfs_common.h>
>
> #include "nfs4_fs.h"
> #include "nfs4trace.h"
> @@ -63,9 +64,6 @@
>
> #define NFSDBG_FACILITY NFSDBG_XDR
>
> -/* Mapping from NFS error code to "errno" error code. */
> -#define errno_NFSERR_IO EIO
> -
> struct compound_hdr;
> static int nfs4_stat_to_errno(int);
> static void encode_layoutget(struct xdr_stream *xdr,
> diff --git a/fs/nfs_common/Makefile b/fs/nfs_common/Makefile
> index 119c75ab9fd0..e58b01bb8dda 100644
> --- a/fs/nfs_common/Makefile
> +++ b/fs/nfs_common/Makefile
> @@ -8,3 +8,5 @@ nfs_acl-objs := nfsacl.o
>
> obj-$(CONFIG_GRACE_PERIOD) += grace.o
> obj-$(CONFIG_NFS_V4_2_SSC_HELPER) += nfs_ssc.o
> +
> +obj-$(CONFIG_NFS_COMMON) += common.o
> diff --git a/fs/nfs_common/common.c b/fs/nfs_common/common.c
> new file mode 100644
> index 000000000000..a4ee95da2174
> --- /dev/null
> +++ b/fs/nfs_common/common.c
> @@ -0,0 +1,67 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +
> +#include <linux/module.h>
> +#include <linux/nfs_common.h>
> +
> +/*
> + * We need to translate between nfs status return values and
> + * the local errno values which may not be the same.
> + */
> +static const struct {
> + int stat;
> + int errno;
> +} nfs_errtbl[] = {
> + { NFS_OK, 0 },
> + { NFSERR_PERM, -EPERM },
> + { NFSERR_NOENT, -ENOENT },
> + { NFSERR_IO, -errno_NFSERR_IO},
> + { NFSERR_NXIO, -ENXIO },
> +/* { NFSERR_EAGAIN, -EAGAIN }, */
> + { NFSERR_ACCES, -EACCES },
> + { NFSERR_EXIST, -EEXIST },
> + { NFSERR_XDEV, -EXDEV },
> + { NFSERR_NODEV, -ENODEV },
> + { NFSERR_NOTDIR, -ENOTDIR },
> + { NFSERR_ISDIR, -EISDIR },
> + { NFSERR_INVAL, -EINVAL },
> + { NFSERR_FBIG, -EFBIG },
> + { NFSERR_NOSPC, -ENOSPC },
> + { NFSERR_ROFS, -EROFS },
> + { NFSERR_MLINK, -EMLINK },
> + { NFSERR_NAMETOOLONG, -ENAMETOOLONG },
> + { NFSERR_NOTEMPTY, -ENOTEMPTY },
> + { NFSERR_DQUOT, -EDQUOT },
> + { NFSERR_STALE, -ESTALE },
> + { NFSERR_REMOTE, -EREMOTE },
> +#ifdef EWFLUSH
> + { NFSERR_WFLUSH, -EWFLUSH },
> +#endif
> + { NFSERR_BADHANDLE, -EBADHANDLE },
> + { NFSERR_NOT_SYNC, -ENOTSYNC },
> + { NFSERR_BAD_COOKIE, -EBADCOOKIE },
> + { NFSERR_NOTSUPP, -ENOTSUPP },
> + { NFSERR_TOOSMALL, -ETOOSMALL },
> + { NFSERR_SERVERFAULT, -EREMOTEIO },
> + { NFSERR_BADTYPE, -EBADTYPE },
> + { NFSERR_JUKEBOX, -EJUKEBOX },
> + { -1, -EIO }
> +};
> +
> +/**
> + * nfs_stat_to_errno - convert an NFS status code to a local errno
> + * @status: NFS status code to convert
> + *
> + * Returns a local errno value, or -EIO if the NFS status code is
> + * not recognized. This function is used jointly by NFSv2 and
> NFSv3.
> + */
> +int nfs_stat_to_errno(enum nfs_stat status)
> +{
> + int i;
> +
> + for (i = 0; nfs_errtbl[i].stat != -1; i++) {
> + if (nfs_errtbl[i].stat == (int)status)
> + return nfs_errtbl[i].errno;
> + }
> + return nfs_errtbl[i].errno;
> +}
> +EXPORT_SYMBOL_GPL(nfs_stat_to_errno);
> diff --git a/fs/nfsd/Kconfig b/fs/nfsd/Kconfig
> index ec2ab6429e00..c0bd1509ccd4 100644
> --- a/fs/nfsd/Kconfig
> +++ b/fs/nfsd/Kconfig
> @@ -7,6 +7,7 @@ config NFSD
> select LOCKD
> select SUNRPC
> select EXPORTFS
> + select NFS_COMMON
> select NFS_ACL_SUPPORT if NFSD_V2_ACL
> select NFS_ACL_SUPPORT if NFSD_V3_ACL
> depends on MULTIUSER
> diff --git a/include/linux/nfs_common.h b/include/linux/nfs_common.h
> new file mode 100644
> index 000000000000..3395c4a4d372
> --- /dev/null
> +++ b/include/linux/nfs_common.h
> @@ -0,0 +1,16 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * This file contains constants and methods used by both NFS client
> and server.
> + */
> +#ifndef _LINUX_NFS_COMMON_H
> +#define _LINUX_NFS_COMMON_H
> +
> +#include <linux/errno.h>
> +#include <uapi/linux/nfs.h>
> +
> +/* Mapping from NFS error code to "errno" error code. */
> +#define errno_NFSERR_IO EIO
> +
> +int nfs_stat_to_errno(enum nfs_stat status);
> +
> +#endif /* _LINUX_NFS_COMMON_H */
Reviewed-by: Jeff Layton <jlayton@kernel.org>
next prev parent reply other threads:[~2024-08-29 14:17 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-29 1:03 [PATCH v14 00/25] nfs/nfsd: add support for LOCALIO Mike Snitzer
2024-08-29 1:03 ` [PATCH v14 01/25] nfs_common: factor out nfs_errtbl and nfs_stat_to_errno Mike Snitzer
2024-08-29 14:17 ` Jeff Layton [this message]
2024-08-29 1:03 ` [PATCH v14 02/25] nfs_common: factor out nfs4_errtbl and nfs4_stat_to_errno Mike Snitzer
2024-08-29 14:17 ` Jeff Layton
2024-08-29 1:03 ` [PATCH v14 03/25] nfs: factor out {encode,decode}_opaque_fixed to nfs_xdr.h Mike Snitzer
2024-08-29 14:19 ` Jeff Layton
2024-08-29 1:03 ` [PATCH v14 04/25] NFSD: Handle @rqstp == NULL in check_nfsd_access() Mike Snitzer
2024-08-29 14:20 ` Jeff Layton
2024-08-29 1:04 ` [PATCH v14 05/25] NFSD: Refactor nfsd_setuser_and_check_port() Mike Snitzer
2024-08-29 14:23 ` Jeff Layton
2024-08-29 1:04 ` [PATCH v14 06/25] NFSD: Avoid using rqstp->rq_vers in nfsd_set_fh_dentry() Mike Snitzer
2024-08-29 1:45 ` [PATCH v14.5 " Mike Snitzer
2024-08-29 16:52 ` Jeff Layton
2024-08-29 14:28 ` [PATCH v14 " Jeff Layton
2024-08-29 15:28 ` Mike Snitzer
2024-08-29 1:04 ` [PATCH v14 07/25] NFSD: Short-circuit fh_verify tracepoints for LOCALIO Mike Snitzer
2024-08-29 14:33 ` Jeff Layton
2024-08-29 14:35 ` Chuck Lever
2024-08-29 1:04 ` [PATCH v14 08/25] nfsd: factor out __fh_verify to allow NULL rqstp to be passed Mike Snitzer
2024-08-29 14:39 ` Jeff Layton
2024-08-29 15:35 ` Mike Snitzer
2024-08-29 1:04 ` [PATCH v14 09/25] nfsd: add nfsd_file_acquire_local() Mike Snitzer
2024-08-29 14:49 ` Jeff Layton
2024-08-29 15:47 ` Chuck Lever
2024-08-29 15:59 ` Mike Snitzer
2024-08-29 1:04 ` [PATCH v14 10/25] nfsd: add nfsd_serv_try_get and nfsd_serv_put Mike Snitzer
2024-08-29 15:49 ` Chuck Lever
2024-08-29 15:57 ` Jeff Layton
2024-08-29 16:01 ` Mike Snitzer
2024-08-29 16:04 ` Chuck Lever
2024-08-29 1:04 ` [PATCH v14 11/25] SUNRPC: remove call_allocate() BUG_ONs Mike Snitzer
2024-08-29 15:58 ` Jeff Layton
2024-08-29 1:04 ` [PATCH v14 12/25] SUNRPC: add svcauth_map_clnt_to_svc_cred_local Mike Snitzer
2024-08-29 15:50 ` Chuck Lever
2024-08-29 16:01 ` Jeff Layton
2024-08-29 1:04 ` [PATCH v14 13/25] SUNRPC: replace program list with program array Mike Snitzer
2024-08-29 16:02 ` Jeff Layton
2024-08-29 1:04 ` [PATCH v14 14/25] nfs_common: add NFS LOCALIO auxiliary protocol enablement Mike Snitzer
2024-08-29 16:07 ` Jeff Layton
2024-08-29 16:22 ` Mike Snitzer
2024-08-29 23:39 ` NeilBrown
2024-08-30 1:45 ` Mike Snitzer
2024-08-29 1:04 ` [PATCH v14 15/25] nfs_common: introduce nfs_localio_ctx struct and interfaces Mike Snitzer
2024-08-29 16:40 ` Jeff Layton
2024-08-29 16:52 ` Mike Snitzer
2024-08-29 17:48 ` Jeff Layton
2024-08-30 4:36 ` NeilBrown
2024-08-30 5:01 ` Mike Snitzer
2024-08-30 5:08 ` Mike Snitzer
2024-08-30 5:12 ` Mike Snitzer
2024-08-30 5:34 ` NeilBrown
2024-08-30 6:02 ` Mike Snitzer
2024-08-30 5:46 ` NeilBrown
2024-08-30 5:56 ` Mike Snitzer
2024-08-29 1:04 ` [PATCH v14 16/25] nfsd: add localio support Mike Snitzer
2024-08-29 16:01 ` Chuck Lever
2024-08-29 16:15 ` Mike Snitzer
2024-08-29 23:10 ` NeilBrown
2024-08-29 16:49 ` Jeff Layton
2024-08-29 16:59 ` Mike Snitzer
2024-08-29 17:18 ` Chuck Lever
2024-08-29 1:04 ` [PATCH v14 17/25] nfsd: implement server support for NFS_LOCALIO_PROGRAM Mike Snitzer
2024-08-29 16:50 ` Jeff Layton
2024-08-29 1:04 ` [PATCH v14 18/25] nfs: pass struct nfs_localio_ctx to nfs_init_pgio and nfs_init_commit Mike Snitzer
2024-08-29 1:04 ` [PATCH v14 19/25] nfs: add localio support Mike Snitzer
2024-08-29 1:04 ` [PATCH v14 20/25] nfs: enable localio for non-pNFS IO Mike Snitzer
2024-08-29 1:04 ` [PATCH v14 21/25] pnfs/flexfiles: enable localio support Mike Snitzer
2024-08-29 1:04 ` [PATCH v14 22/25] nfs/localio: use dedicated workqueues for filesystem read and write Mike Snitzer
2024-08-29 1:04 ` [PATCH v14 23/25] nfs: implement client support for NFS_LOCALIO_PROGRAM Mike Snitzer
2024-08-29 1:04 ` [PATCH v14 24/25] nfs: add Documentation/filesystems/nfs/localio.rst Mike Snitzer
2024-08-29 1:04 ` [PATCH v14 25/25] nfs: add FAQ section to Documentation/filesystems/nfs/localio.rst Mike Snitzer
2024-08-29 1:47 ` [PATCH v14.5 " Mike Snitzer
2024-08-29 1:42 ` [PATCH v14 00/25] nfs/nfsd: add support for LOCALIO Mike Snitzer
2024-08-29 1:50 ` Mike Snitzer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=251afa885bf38e0d819d64f8fc24fbddfd7b57ec.camel@kernel.org \
--to=jlayton@kernel.org \
--cc=anna@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=neilb@suse.de \
--cc=snitzer@kernel.org \
--cc=trondmy@hammerspace.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.