diff options
| -rw-r--r-- | xlators/nfs/lib/src/rpcsvc.c | 2 | ||||
| -rw-r--r-- | xlators/nfs/lib/src/rpcsvc.h | 8 | 
2 files changed, 10 insertions, 0 deletions
diff --git a/xlators/nfs/lib/src/rpcsvc.c b/xlators/nfs/lib/src/rpcsvc.c index 930634d6553..4698e2e8d11 100644 --- a/xlators/nfs/lib/src/rpcsvc.c +++ b/xlators/nfs/lib/src/rpcsvc.c @@ -1897,6 +1897,7 @@ nfs_rpcsvc_handle_rpc_call (rpcsvc_conn_t *conn)                  goto err_reply;          if ((actor) && (actor->actor)) { +                THIS = nfs_rpcsvc_request_actorxl (req);                  nfs_rpcsvc_conn_ref (conn);                  ret = actor->actor (req);          } @@ -2201,6 +2202,7 @@ nfs_rpcsvc_record_vectored_call_actor (rpcsvc_conn_t *conn)          if (actor->vector_actor) {                  nfs_rpcsvc_conn_ref (conn); +                THIS = nfs_rpcsvc_request_actorxl (req);                  ret = actor->vector_actor (req, rs->vectoriob);          } else {                  nfs_rpcsvc_request_seterr (req, PROC_UNAVAIL); diff --git a/xlators/nfs/lib/src/rpcsvc.h b/xlators/nfs/lib/src/rpcsvc.h index a56b70d4eed..6d3834c8560 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 <pthread.h>  #include <sys/uio.h> @@ -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;  };  | 
