summaryrefslogtreecommitdiffstats
path: root/xlators/nfs/lib/src
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/nfs/lib/src')
-rw-r--r--xlators/nfs/lib/src/rpcsvc.c4
-rw-r--r--xlators/nfs/lib/src/rpcsvc.h1
2 files changed, 5 insertions, 0 deletions
diff --git a/xlators/nfs/lib/src/rpcsvc.c b/xlators/nfs/lib/src/rpcsvc.c
index da9cb3bc8..ff3c1facc 100644
--- a/xlators/nfs/lib/src/rpcsvc.c
+++ b/xlators/nfs/lib/src/rpcsvc.c
@@ -1987,6 +1987,8 @@ nfs_rpcsvc_handle_rpc_call (rpcsvc_conn_t *conn)
err_reply:
if (ret == RPCSVC_ACTOR_ERROR)
ret = nfs_rpcsvc_error_reply (req);
+ else if (ret == RPCSVC_ACTOR_IGNORE)
+ mem_put (conn->rxpool, req);
/* No need to propagate error beyond this function since the reply
* has now been queued. */
@@ -2297,6 +2299,8 @@ nfs_rpcsvc_record_vectored_call_actor (rpcsvc_conn_t *conn)
err_reply:
if (ret == RPCSVC_ACTOR_ERROR)
ret = nfs_rpcsvc_error_reply (req);
+ else if (ret == RPCSVC_ACTOR_IGNORE)
+ mem_put (conn->rxpool, req);
/* No need to propagate error beyond this function since the reply
* has now been queued. */
diff --git a/xlators/nfs/lib/src/rpcsvc.h b/xlators/nfs/lib/src/rpcsvc.h
index a43a8500f..4e7c81845 100644
--- a/xlators/nfs/lib/src/rpcsvc.h
+++ b/xlators/nfs/lib/src/rpcsvc.h
@@ -395,6 +395,7 @@ struct rpcsvc_request {
#define RPCSVC_ACTOR_SUCCESS 0
#define RPCSVC_ACTOR_ERROR (-1)
+#define RPCSVC_ACTOR_IGNORE (-2)
/* Functor for every type of protocol actor
* must be defined like this.