#include <linux/param.h>
#include <linux/time.h>
#include <linux/mm.h>
#include <linux/errno.h>
#include <linux/string.h>
#include <linux/in.h>
#include <linux/pagemap.h>
#include <linux/proc_fs.h>
#include <linux/sunrpc/clnt.h>
#include <linux/nfs.h>
#include <linux/nfs2.h>
#include <linux/nfs_fs.h>
#include "nfstrace.h"
#include "internal.h"
#define NFSDBG_FACILITY …
#define errno_NFSERR_IO …
#define NFS_pagepad_sz …
#define NFS_fhandle_sz …
#define NFS_sattr_sz …
#define NFS_filename_sz …
#define NFS_path_sz …
#define NFS_fattr_sz …
#define NFS_info_sz …
#define NFS_entry_sz …
#define NFS_diropargs_sz …
#define NFS_removeargs_sz …
#define NFS_sattrargs_sz …
#define NFS_readlinkargs_sz …
#define NFS_readargs_sz …
#define NFS_writeargs_sz …
#define NFS_createargs_sz …
#define NFS_renameargs_sz …
#define NFS_linkargs_sz …
#define NFS_symlinkargs_sz …
#define NFS_readdirargs_sz …
#define NFS_attrstat_sz …
#define NFS_diropres_sz …
#define NFS_readlinkres_sz …
#define NFS_readres_sz …
#define NFS_writeres_sz …
#define NFS_stat_sz …
#define NFS_readdirres_sz …
#define NFS_statfsres_sz …
static int nfs_stat_to_errno(enum nfs_stat);
static struct user_namespace *rpc_userns(const struct rpc_clnt *clnt)
{ … }
static struct user_namespace *rpc_rqst_userns(const struct rpc_rqst *rqstp)
{ … }
static int decode_nfsdata(struct xdr_stream *xdr, struct nfs_pgio_res *result)
{ … }
static int decode_stat(struct xdr_stream *xdr, enum nfs_stat *status)
{ … }
static __be32 *xdr_decode_ftype(__be32 *p, u32 *type)
{ … }
static void encode_fhandle(struct xdr_stream *xdr, const struct nfs_fh *fh)
{ … }
static int decode_fhandle(struct xdr_stream *xdr, struct nfs_fh *fh)
{ … }
static __be32 *xdr_encode_time(__be32 *p, const struct timespec64 *timep)
{ … }
static __be32 *xdr_encode_current_server_time(__be32 *p,
const struct timespec64 *timep)
{ … }
static __be32 *xdr_decode_time(__be32 *p, struct timespec64 *timep)
{ … }
static int decode_fattr(struct xdr_stream *xdr, struct nfs_fattr *fattr,
struct user_namespace *userns)
{ … }
#define NFS2_SATTR_NOT_SET …
static __be32 *xdr_time_not_set(__be32 *p)
{ … }
static void encode_sattr(struct xdr_stream *xdr, const struct iattr *attr,
struct user_namespace *userns)
{ … }
static void encode_filename(struct xdr_stream *xdr,
const char *name, u32 length)
{ … }
static int decode_filename_inline(struct xdr_stream *xdr,
const char **name, u32 *length)
{ … }
static void encode_path(struct xdr_stream *xdr, struct page **pages, u32 length)
{ … }
static int decode_path(struct xdr_stream *xdr)
{ … }
static int decode_attrstat(struct xdr_stream *xdr, struct nfs_fattr *result,
__u32 *op_status,
struct user_namespace *userns)
{ … }
static void encode_diropargs(struct xdr_stream *xdr, const struct nfs_fh *fh,
const char *name, u32 length)
{ … }
static int decode_diropok(struct xdr_stream *xdr, struct nfs_diropok *result,
struct user_namespace *userns)
{ … }
static int decode_diropres(struct xdr_stream *xdr, struct nfs_diropok *result,
struct user_namespace *userns)
{ … }
static void nfs2_xdr_enc_fhandle(struct rpc_rqst *req,
struct xdr_stream *xdr,
const void *data)
{ … }
static void nfs2_xdr_enc_sattrargs(struct rpc_rqst *req,
struct xdr_stream *xdr,
const void *data)
{ … }
static void nfs2_xdr_enc_diropargs(struct rpc_rqst *req,
struct xdr_stream *xdr,
const void *data)
{ … }
static void nfs2_xdr_enc_readlinkargs(struct rpc_rqst *req,
struct xdr_stream *xdr,
const void *data)
{ … }
static void encode_readargs(struct xdr_stream *xdr,
const struct nfs_pgio_args *args)
{ … }
static void nfs2_xdr_enc_readargs(struct rpc_rqst *req,
struct xdr_stream *xdr,
const void *data)
{ … }
static void encode_writeargs(struct xdr_stream *xdr,
const struct nfs_pgio_args *args)
{ … }
static void nfs2_xdr_enc_writeargs(struct rpc_rqst *req,
struct xdr_stream *xdr,
const void *data)
{ … }
static void nfs2_xdr_enc_createargs(struct rpc_rqst *req,
struct xdr_stream *xdr,
const void *data)
{ … }
static void nfs2_xdr_enc_removeargs(struct rpc_rqst *req,
struct xdr_stream *xdr,
const void *data)
{ … }
static void nfs2_xdr_enc_renameargs(struct rpc_rqst *req,
struct xdr_stream *xdr,
const void *data)
{ … }
static void nfs2_xdr_enc_linkargs(struct rpc_rqst *req,
struct xdr_stream *xdr,
const void *data)
{ … }
static void nfs2_xdr_enc_symlinkargs(struct rpc_rqst *req,
struct xdr_stream *xdr,
const void *data)
{ … }
static void encode_readdirargs(struct xdr_stream *xdr,
const struct nfs_readdirargs *args)
{ … }
static void nfs2_xdr_enc_readdirargs(struct rpc_rqst *req,
struct xdr_stream *xdr,
const void *data)
{ … }
static int nfs2_xdr_dec_stat(struct rpc_rqst *req, struct xdr_stream *xdr,
void *__unused)
{ … }
static int nfs2_xdr_dec_attrstat(struct rpc_rqst *req, struct xdr_stream *xdr,
void *result)
{ … }
static int nfs2_xdr_dec_diropres(struct rpc_rqst *req, struct xdr_stream *xdr,
void *result)
{ … }
static int nfs2_xdr_dec_readlinkres(struct rpc_rqst *req,
struct xdr_stream *xdr, void *__unused)
{ … }
static int nfs2_xdr_dec_readres(struct rpc_rqst *req, struct xdr_stream *xdr,
void *data)
{ … }
static int nfs2_xdr_dec_writeres(struct rpc_rqst *req, struct xdr_stream *xdr,
void *data)
{ … }
int nfs2_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry,
bool plus)
{ … }
static int decode_readdirok(struct xdr_stream *xdr)
{ … }
static int nfs2_xdr_dec_readdirres(struct rpc_rqst *req,
struct xdr_stream *xdr, void *__unused)
{ … }
static int decode_info(struct xdr_stream *xdr, struct nfs2_fsstat *result)
{ … }
static int nfs2_xdr_dec_statfsres(struct rpc_rqst *req, struct xdr_stream *xdr,
void *result)
{ … }
static const struct { … } nfs_errtbl[] = …;
static int nfs_stat_to_errno(enum nfs_stat status)
{ … }
#define PROC(proc, argtype, restype, timer) …
const struct rpc_procinfo nfs_procedures[] = …;
static unsigned int nfs_version2_counts[ARRAY_SIZE(nfs_procedures)];
const struct rpc_version nfs_version2 = …;