diff options
Diffstat (limited to 'xlators')
-rw-r--r-- | xlators/protocol/server/src/server-helpers.c | 6 | ||||
-rw-r--r-- | xlators/protocol/server/src/server.c | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/xlators/protocol/server/src/server-helpers.c b/xlators/protocol/server/src/server-helpers.c index ff23959ec..2df463a9c 100644 --- a/xlators/protocol/server/src/server-helpers.c +++ b/xlators/protocol/server/src/server-helpers.c @@ -956,9 +956,11 @@ gf_barrier_transmit (server_conf_t *conf, gf_barrier_payload_t *payload) if (frame) { state = CALL_STATE (frame); frame->local = NULL; - client = state->client; + if (state) + client = state->client; } - + /* currently lk fops are not barrier'ed. This is reflecting code in + * server_submit_reply */ if (client) lk_heal = ((server_conf_t *) client->this->private)->lk_heal; diff --git a/xlators/protocol/server/src/server.c b/xlators/protocol/server/src/server.c index bea3e21fa..589bd7b36 100644 --- a/xlators/protocol/server/src/server.c +++ b/xlators/protocol/server/src/server.c @@ -200,7 +200,7 @@ server_submit_reply (call_frame_t *frame, rpcsvc_request_t *req, void *arg, } UNLOCK (&barrier->lock); if (barriered == _gf_true) - goto ret; + goto out; } /* Then, submit the message for transmission. */ ret = rpcsvc_submit_generic (req, &rsp, 1, payload, payloadcount, @@ -243,6 +243,7 @@ ret: if (new_iobref) { iobref_unref (iobref); } +out: return ret; } @@ -970,6 +971,7 @@ init (xlator_t *this) } LOCK_INIT (&barrier->lock); + INIT_LIST_HEAD (&barrier->queue); barrier->on = _gf_false; GF_OPTION_INIT ("barrier-queue-length", barrier->max_size, |