From 66beeeb7739531335ad0982b51886e82f7c8647f Mon Sep 17 00:00:00 2001 From: Shehjar Tikoo Date: Tue, 31 Aug 2010 06:50:34 +0000 Subject: nfsrpc: Introduce THIS-setting support to fix mem-accounting Not setting THIS in nfs/rpc has been a blocker for NFS on mainline because without THIS set correctly to nfsx, mem-accounting goes looking into translators other than nfsx for nfs memory allocations, resulting in dereferencing bad addresses. Signed-off-by: Shehjar Tikoo Signed-off-by: Vijay Bellur BUG: 1280 (gf_mem_set_acct_info goes into spinlock busyloop, never returns) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1280 --- xlators/nfs/lib/src/rpcsvc.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'xlators/nfs/lib/src/rpcsvc.h') diff --git a/xlators/nfs/lib/src/rpcsvc.h b/xlators/nfs/lib/src/rpcsvc.h index a56b70d4..6d3834c8 100644 --- a/xlators/nfs/lib/src/rpcsvc.h +++ b/xlators/nfs/lib/src/rpcsvc.h @@ -34,6 +34,7 @@ #include "iobuf.h" #include "xdr-rpc.h" #include "glusterfs.h" +#include "xlator.h" #include #include @@ -369,6 +370,8 @@ struct rpcsvc_request { #define nfs_rpcsvc_request_program(req) ((rpcsvc_program_t *)((req)->conn->program)) #define nfs_rpcsvc_request_program_private(req) (((rpcsvc_program_t *)((req)->conn->program))->private) #define nfs_rpcsvc_request_conn(req) (req)->conn +#define nfs_rpcsvc_program_xlator(prg) ((prg)->actorxl) +#define nfs_rpcsvc_request_actorxl(rq) (nfs_rpcsvc_request_program(rq))->actorxl #define nfs_rpcsvc_request_accepted(req) ((req)->rpc_stat == MSG_ACCEPTED) #define nfs_rpcsvc_request_accepted_success(req) ((req)->rpc_err == SUCCESS) #define nfs_rpcsvc_request_uid(req) ((req)->uid) @@ -484,6 +487,11 @@ struct rpc_svc_program { * See RFC 1813, Section 5.2.1. */ int min_auth; + + /* The translator in whose context the actor must execute. This is + * needed to setup THIS for memory accounting to work correctly. + */ + xlator_t *actorxl; }; -- cgit