Merge branch 'for-2.6.30' of git://linux-nfs.org/~bfields/linux
* 'for-2.6.30' of git://linux-nfs.org/~bfields/linux: (81 commits) nfsd41: define nfsd4_set_statp as noop for !CONFIG_NFSD_V4 nfsd41: define NFSD_DRC_SIZE_SHIFT in set_max_drc nfsd41: Documentation/filesystems/nfs41-server.txt nfsd41: CREATE_EXCLUSIVE4_1 nfsd41: SUPPATTR_EXCLCREAT attribute nfsd41: support for 3-word long attribute bitmask nfsd: dynamically skip encoded fattr bitmap in _nfsd4_verify nfsd41: pass writable attrs mask to nfsd4_decode_fattr nfsd41: provide support for minor version 1 at rpc level nfsd41: control nfsv4.1 svc via /proc/fs/nfsd/versions nfsd41: add OPEN4_SHARE_ACCESS_WANT nfs4_stateid bmap nfsd41: access_valid nfsd41: clientid handling nfsd41: check encode size for sessions maxresponse cached nfsd41: stateid handling nfsd: pass nfsd4_compound_state* to nfs4_preprocess_{state,seq}id_op nfsd41: destroy_session operation nfsd41: non-page DRC for solo sequence responses nfsd41: Add a create session replay cache nfsd41: create_session operation ...
This commit is contained in:
@@ -24,6 +24,15 @@
|
||||
*/
|
||||
typedef int (*svc_thread_fn)(void *);
|
||||
|
||||
/* statistics for svc_pool structures */
|
||||
struct svc_pool_stats {
|
||||
unsigned long packets;
|
||||
unsigned long sockets_queued;
|
||||
unsigned long threads_woken;
|
||||
unsigned long overloads_avoided;
|
||||
unsigned long threads_timedout;
|
||||
};
|
||||
|
||||
/*
|
||||
*
|
||||
* RPC service thread pool.
|
||||
@@ -41,6 +50,8 @@ struct svc_pool {
|
||||
struct list_head sp_sockets; /* pending sockets */
|
||||
unsigned int sp_nrthreads; /* # of threads in pool */
|
||||
struct list_head sp_all_threads; /* all server threads */
|
||||
int sp_nwaking; /* number of threads woken but not yet active */
|
||||
struct svc_pool_stats sp_stats; /* statistics on pool operation */
|
||||
} ____cacheline_aligned_in_smp;
|
||||
|
||||
/*
|
||||
@@ -83,6 +94,8 @@ struct svc_serv {
|
||||
struct module * sv_module; /* optional module to count when
|
||||
* adding threads */
|
||||
svc_thread_fn sv_function; /* main function for threads */
|
||||
unsigned int sv_drc_max_pages; /* Total pages for DRC */
|
||||
unsigned int sv_drc_pages_used;/* DRC pages used */
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -218,6 +231,7 @@ struct svc_rqst {
|
||||
struct svc_cred rq_cred; /* auth info */
|
||||
void * rq_xprt_ctxt; /* transport specific context ptr */
|
||||
struct svc_deferred_req*rq_deferred; /* deferred request we are replaying */
|
||||
int rq_usedeferral; /* use deferral */
|
||||
|
||||
size_t rq_xprt_hlen; /* xprt header len */
|
||||
struct xdr_buf rq_arg;
|
||||
@@ -263,6 +277,7 @@ struct svc_rqst {
|
||||
* cache pages */
|
||||
wait_queue_head_t rq_wait; /* synchronization */
|
||||
struct task_struct *rq_task; /* service thread */
|
||||
int rq_waking; /* 1 if thread is being woken */
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -393,6 +408,7 @@ struct svc_serv * svc_create_pooled(struct svc_program *, unsigned int,
|
||||
void (*shutdown)(struct svc_serv *),
|
||||
svc_thread_fn, struct module *);
|
||||
int svc_set_num_threads(struct svc_serv *, struct svc_pool *, int);
|
||||
int svc_pool_stats_open(struct svc_serv *serv, struct file *file);
|
||||
void svc_destroy(struct svc_serv *);
|
||||
int svc_process(struct svc_rqst *);
|
||||
int svc_register(const struct svc_serv *, const int,
|
||||
|
@@ -69,27 +69,27 @@ struct xdr_buf {
|
||||
* pre-xdr'ed macros.
|
||||
*/
|
||||
|
||||
#define xdr_zero __constant_htonl(0)
|
||||
#define xdr_one __constant_htonl(1)
|
||||
#define xdr_two __constant_htonl(2)
|
||||
#define xdr_zero cpu_to_be32(0)
|
||||
#define xdr_one cpu_to_be32(1)
|
||||
#define xdr_two cpu_to_be32(2)
|
||||
|
||||
#define rpc_success __constant_htonl(RPC_SUCCESS)
|
||||
#define rpc_prog_unavail __constant_htonl(RPC_PROG_UNAVAIL)
|
||||
#define rpc_prog_mismatch __constant_htonl(RPC_PROG_MISMATCH)
|
||||
#define rpc_proc_unavail __constant_htonl(RPC_PROC_UNAVAIL)
|
||||
#define rpc_garbage_args __constant_htonl(RPC_GARBAGE_ARGS)
|
||||
#define rpc_system_err __constant_htonl(RPC_SYSTEM_ERR)
|
||||
#define rpc_drop_reply __constant_htonl(RPC_DROP_REPLY)
|
||||
#define rpc_success cpu_to_be32(RPC_SUCCESS)
|
||||
#define rpc_prog_unavail cpu_to_be32(RPC_PROG_UNAVAIL)
|
||||
#define rpc_prog_mismatch cpu_to_be32(RPC_PROG_MISMATCH)
|
||||
#define rpc_proc_unavail cpu_to_be32(RPC_PROC_UNAVAIL)
|
||||
#define rpc_garbage_args cpu_to_be32(RPC_GARBAGE_ARGS)
|
||||
#define rpc_system_err cpu_to_be32(RPC_SYSTEM_ERR)
|
||||
#define rpc_drop_reply cpu_to_be32(RPC_DROP_REPLY)
|
||||
|
||||
#define rpc_auth_ok __constant_htonl(RPC_AUTH_OK)
|
||||
#define rpc_autherr_badcred __constant_htonl(RPC_AUTH_BADCRED)
|
||||
#define rpc_autherr_rejectedcred __constant_htonl(RPC_AUTH_REJECTEDCRED)
|
||||
#define rpc_autherr_badverf __constant_htonl(RPC_AUTH_BADVERF)
|
||||
#define rpc_autherr_rejectedverf __constant_htonl(RPC_AUTH_REJECTEDVERF)
|
||||
#define rpc_autherr_tooweak __constant_htonl(RPC_AUTH_TOOWEAK)
|
||||
#define rpcsec_gsserr_credproblem __constant_htonl(RPCSEC_GSS_CREDPROBLEM)
|
||||
#define rpcsec_gsserr_ctxproblem __constant_htonl(RPCSEC_GSS_CTXPROBLEM)
|
||||
#define rpc_autherr_oldseqnum __constant_htonl(101)
|
||||
#define rpc_auth_ok cpu_to_be32(RPC_AUTH_OK)
|
||||
#define rpc_autherr_badcred cpu_to_be32(RPC_AUTH_BADCRED)
|
||||
#define rpc_autherr_rejectedcred cpu_to_be32(RPC_AUTH_REJECTEDCRED)
|
||||
#define rpc_autherr_badverf cpu_to_be32(RPC_AUTH_BADVERF)
|
||||
#define rpc_autherr_rejectedverf cpu_to_be32(RPC_AUTH_REJECTEDVERF)
|
||||
#define rpc_autherr_tooweak cpu_to_be32(RPC_AUTH_TOOWEAK)
|
||||
#define rpcsec_gsserr_credproblem cpu_to_be32(RPCSEC_GSS_CREDPROBLEM)
|
||||
#define rpcsec_gsserr_ctxproblem cpu_to_be32(RPCSEC_GSS_CTXPROBLEM)
|
||||
#define rpc_autherr_oldseqnum cpu_to_be32(101)
|
||||
|
||||
/*
|
||||
* Miscellaneous XDR helper functions
|
||||
|
Reference in New Issue
Block a user