summaryrefslogtreecommitdiffstats
path: root/xlators/nfs/lib/src
diff options
context:
space:
mode:
authorShehjar Tikoo <shehjart@gluster.com>2011-01-05 07:02:14 +0000
committerAnand V. Avati <avati@dev.gluster.com>2011-01-07 17:43:56 -0800
commit38d0824031f445620fa0d704043cd5dedadea721 (patch)
treef2ce85d02ea7a5c4b2bcf262838c6602fc14e8c5 /xlators/nfs/lib/src
parentde6936a022e34a22eca39e189da368c03b46481f (diff)
nfs3: Ignore requests for volumes without a single CHILD-UP
NFS ignores the requests for subvolumes on which child-up has never been received. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 2200 (cp dies with "Invalid argument" after failover) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2200
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 da9cb3bc8bb..ff3c1facc18 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 a43a8500f4b..4e7c8184547 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.