summaryrefslogtreecommitdiffstats
path: root/xlators/protocol/client
diff options
context:
space:
mode:
authorAnand Avati <avati@gluster.com>2010-10-12 01:21:51 +0000
committerVijay Bellur <vijay@dev.gluster.com>2010-10-12 00:11:14 -0700
commitc3b6df1a8e27c66a5c17cc1d6a92fdc37354ae6f (patch)
treee466714af844ea5b9f3ff64afa852d48ccacfe06 /xlators/protocol/client
parent91580140b3df01838c5c5a6dac301efb87c4bd93 (diff)
protocol/client: prevent propagation of CHILD_DOWN after pmap query
pmap query results in a new port to which the rpc client reconnects. This involves disconnection of current connection to pmap which was propagating CHILD_DOWN upwards prematurely Signed-off-by: Anand V. Avati <avati@blackhole.gluster.com> Signed-off-by: Vijay Bellur <vijay@dev.gluster.com> BUG: 1756 (NFS must revalidate inode on first ESTALE on lookup) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1756
Diffstat (limited to 'xlators/protocol/client')
-rw-r--r--xlators/protocol/client/src/client-handshake.c1
-rw-r--r--xlators/protocol/client/src/client.c5
-rw-r--r--xlators/protocol/client/src/client.h1
3 files changed, 6 insertions, 1 deletions
diff --git a/xlators/protocol/client/src/client-handshake.c b/xlators/protocol/client/src/client-handshake.c
index fd9ee08208e..3dec4900605 100644
--- a/xlators/protocol/client/src/client-handshake.c
+++ b/xlators/protocol/client/src/client-handshake.c
@@ -782,6 +782,7 @@ out:
STACK_DESTROY (frame->root);
if (conf) {
+ conf->skip_notify = 1;
rpc_transport_disconnect (conf->rpc->conn.trans);
rpc_clnt_reconnect (conf->rpc->conn.trans);
diff --git a/xlators/protocol/client/src/client.c b/xlators/protocol/client/src/client.c
index e2513f89145..53c356cdec6 100644
--- a/xlators/protocol/client/src/client.c
+++ b/xlators/protocol/client/src/client.c
@@ -1585,7 +1585,10 @@ client_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event,
gf_log (this->name, GF_LOG_TRACE, "got RPC_CLNT_DISCONNECT");
- default_notify (this, GF_EVENT_CHILD_DOWN, NULL);
+ if (!conf->skip_notify)
+ default_notify (this, GF_EVENT_CHILD_DOWN, NULL);
+ conf->skip_notify = 0;
+
break;
default:
diff --git a/xlators/protocol/client/src/client.h b/xlators/protocol/client/src/client.h
index 496e709ba31..39dfc36ea89 100644
--- a/xlators/protocol/client/src/client.h
+++ b/xlators/protocol/client/src/client.h
@@ -58,6 +58,7 @@ typedef struct clnt_conf {
uint64_t reopen_fd_count; /* Count of fds reopened after a
connection is established */
gf_lock_t rec_lock;
+ int skip_notify;
} clnt_conf_t;
typedef struct _client_fd_ctx {