From e16868dede6455cab644805af6fe1ac312775e13 Mon Sep 17 00:00:00 2001 From: Gluster Ant Date: Wed, 12 Sep 2018 17:52:45 +0530 Subject: Land part 2 of clang-format changes Change-Id: Ia84cc24c8924e6d22d02ac15f611c10e26db99b4 Signed-off-by: Nigel Babu --- xlators/features/quiesce/src/quiesce.c | 3516 +++++++++++++++----------------- 1 file changed, 1629 insertions(+), 1887 deletions(-) (limited to 'xlators/features/quiesce/src/quiesce.c') diff --git a/xlators/features/quiesce/src/quiesce.c b/xlators/features/quiesce/src/quiesce.c index 95c0c8b0829..b7c2c549a91 100644 --- a/xlators/features/quiesce/src/quiesce.c +++ b/xlators/features/quiesce/src/quiesce.c @@ -15,826 +15,801 @@ /* Think about 'writev/_*_lk/setattr/xattrop/' fops to do re-transmittion */ void -gf_quiesce_timeout (void *data); - +gf_quiesce_timeout(void *data); /* Quiesce Specific Functions */ void -gf_quiesce_local_wipe (xlator_t *this, quiesce_local_t *local) +gf_quiesce_local_wipe(xlator_t *this, quiesce_local_t *local) { - if (!local || !this || !this->private) - return; + if (!local || !this || !this->private) + return; - if (local->loc.inode) - loc_wipe (&local->loc); - if (local->fd) - fd_unref (local->fd); - GF_FREE (local->name); - GF_FREE (local->volname); - if (local->dict) - dict_unref (local->dict); - if (local->iobref) - iobref_unref (local->iobref); - GF_FREE (local->vector); + if (local->loc.inode) + loc_wipe(&local->loc); + if (local->fd) + fd_unref(local->fd); + GF_FREE(local->name); + GF_FREE(local->volname); + if (local->dict) + dict_unref(local->dict); + if (local->iobref) + iobref_unref(local->iobref); + GF_FREE(local->vector); - mem_put (local); + mem_put(local); } void -__gf_quiesce_start_timer (xlator_t *this, quiesce_priv_t *priv) +__gf_quiesce_start_timer(xlator_t *this, quiesce_priv_t *priv) { - struct timespec timeout = {0,}; + struct timespec timeout = { + 0, + }; - if (!priv->timer) { - timeout.tv_sec = priv->timeout; - timeout.tv_nsec = 0; + if (!priv->timer) { + timeout.tv_sec = priv->timeout; + timeout.tv_nsec = 0; - priv->timer = gf_timer_call_after (this->ctx, - timeout, - gf_quiesce_timeout, - (void *) this); - if (priv->timer == NULL) { - gf_log (this->name, GF_LOG_ERROR, - "Cannot create timer"); - } + priv->timer = gf_timer_call_after(this->ctx, timeout, + gf_quiesce_timeout, (void *)this); + if (priv->timer == NULL) { + gf_log(this->name, GF_LOG_ERROR, "Cannot create timer"); } + } } static void -__gf_quiesce_cleanup_failover_hosts (xlator_t *this, quiesce_priv_t *priv) +__gf_quiesce_cleanup_failover_hosts(xlator_t *this, quiesce_priv_t *priv) { - quiesce_failover_hosts_t *tmp = NULL; - quiesce_failover_hosts_t *failover_host = NULL; + quiesce_failover_hosts_t *tmp = NULL; + quiesce_failover_hosts_t *failover_host = NULL; - list_for_each_entry_safe (failover_host, tmp, - &priv->failover_list, list) { - GF_FREE (failover_host->addr); - list_del (&failover_host->list); - GF_FREE (failover_host); - } - return; + list_for_each_entry_safe(failover_host, tmp, &priv->failover_list, list) + { + GF_FREE(failover_host->addr); + list_del(&failover_host->list); + GF_FREE(failover_host); + } + return; } void -gf_quiesce_populate_failover_hosts (xlator_t *this, quiesce_priv_t *priv, - const char *value) -{ - char *dup_val = NULL; - char *addr_tok = NULL; - char *save_ptr = NULL; - quiesce_failover_hosts_t *failover_host = NULL; - - if (!value) - goto out; - - dup_val = gf_strdup (value); - if (!dup_val) - goto out; - - LOCK (&priv->lock); - { - if (!list_empty (&priv->failover_list)) - __gf_quiesce_cleanup_failover_hosts (this, priv); - addr_tok = strtok_r (dup_val, ",", &save_ptr); - while (addr_tok) { - if (!valid_internet_address (addr_tok, _gf_true)) { - gf_msg (this->name, GF_LOG_INFO, 0, - QUIESCE_MSG_INVAL_HOST, "Specified " - "invalid internet address:%s", - addr_tok); - continue; - } - failover_host = GF_CALLOC (1, sizeof(*failover_host), - gf_quiesce_mt_failover_hosts); - failover_host->addr = gf_strdup (addr_tok); - INIT_LIST_HEAD (&failover_host->list); - list_add (&failover_host->list, &priv->failover_list); - addr_tok = strtok_r (NULL, ",", &save_ptr); - } - } - UNLOCK (&priv->lock); - GF_FREE (dup_val); +gf_quiesce_populate_failover_hosts(xlator_t *this, quiesce_priv_t *priv, + const char *value) +{ + char *dup_val = NULL; + char *addr_tok = NULL; + char *save_ptr = NULL; + quiesce_failover_hosts_t *failover_host = NULL; + + if (!value) + goto out; + + dup_val = gf_strdup(value); + if (!dup_val) + goto out; + + LOCK(&priv->lock); + { + if (!list_empty(&priv->failover_list)) + __gf_quiesce_cleanup_failover_hosts(this, priv); + addr_tok = strtok_r(dup_val, ",", &save_ptr); + while (addr_tok) { + if (!valid_internet_address(addr_tok, _gf_true)) { + gf_msg(this->name, GF_LOG_INFO, 0, QUIESCE_MSG_INVAL_HOST, + "Specified " + "invalid internet address:%s", + addr_tok); + continue; + } + failover_host = GF_CALLOC(1, sizeof(*failover_host), + gf_quiesce_mt_failover_hosts); + failover_host->addr = gf_strdup(addr_tok); + INIT_LIST_HEAD(&failover_host->list); + list_add(&failover_host->list, &priv->failover_list); + addr_tok = strtok_r(NULL, ",", &save_ptr); + } + } + UNLOCK(&priv->lock); + GF_FREE(dup_val); out: - return; + return; } int32_t -gf_quiesce_failover_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata) +gf_quiesce_failover_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata) { - quiesce_priv_t *priv = NULL; + quiesce_priv_t *priv = NULL; - if (op_ret < 0) { - /* Failure here doesn't mean the failover to another host didn't - * succeed, we will know if failover succeeds or not by the - * CHILD_UP/CHILD_DOWN event. A failure here indicates something - * went wrong with the submission of failover command, hence - * just abort the failover attempts without retrying with other - * hosts. - */ - gf_msg (this->name, GF_LOG_INFO, op_errno, - QUIESCE_MSG_FAILOVER_FAILED, - "Initiating failover to host:%s failed:", (char *)cookie); - } + if (op_ret < 0) { + /* Failure here doesn't mean the failover to another host didn't + * succeed, we will know if failover succeeds or not by the + * CHILD_UP/CHILD_DOWN event. A failure here indicates something + * went wrong with the submission of failover command, hence + * just abort the failover attempts without retrying with other + * hosts. + */ + gf_msg(this->name, GF_LOG_INFO, op_errno, QUIESCE_MSG_FAILOVER_FAILED, + "Initiating failover to host:%s failed:", (char *)cookie); + } - GF_FREE (cookie); - STACK_DESTROY (frame->root); + GF_FREE(cookie); + STACK_DESTROY(frame->root); - priv = this->private; - __gf_quiesce_start_timer (this, priv); + priv = this->private; + __gf_quiesce_start_timer(this, priv); - return 0; + return 0; } int -__gf_quiesce_perform_failover (xlator_t *this) -{ - int ret = 0; - call_frame_t *frame = NULL; - dict_t *dict = NULL; - quiesce_priv_t *priv = NULL; - quiesce_failover_hosts_t *failover_host = NULL; - quiesce_failover_hosts_t *host = NULL; - - priv = this->private; - - if (priv->pass_through) { - gf_msg_trace (this->name, 0, "child is up, hence not " - "performing any failover"); - goto out; - } - - list_for_each_entry (failover_host, &priv->failover_list, list) { - if (failover_host->tried == 0) { - host = failover_host; - failover_host->tried = 1; - break; - } - } - if (!host) { - /*TODO: Keep trying until any of the gfproxy comes back up. - Currently it tries failing over once for each host, - if it doesn't succeed then returns error to mount point - list_for_each_entry (failover_host, - &priv->failover_list, list) { - failover_host->tried = 0; - }*/ - gf_msg_debug (this->name, 0, "all the failover hosts have " - "been tried and looks like didn't succeed"); - ret = -1; - goto out; - } - - frame = create_frame (this, this->ctx->pool); - - dict = dict_new (); - - ret = dict_set_dynstr (dict, CLIENT_CMD_CONNECT, - gf_strdup (host->addr)); - - gf_msg_trace (this->name, 0, "Initiating failover to:%s", - host->addr); - - STACK_WIND_COOKIE (frame, gf_quiesce_failover_cbk, NULL, - FIRST_CHILD (this), - FIRST_CHILD (this)->fops->setxattr, - NULL, dict, 0, NULL); +__gf_quiesce_perform_failover(xlator_t *this) +{ + int ret = 0; + call_frame_t *frame = NULL; + dict_t *dict = NULL; + quiesce_priv_t *priv = NULL; + quiesce_failover_hosts_t *failover_host = NULL; + quiesce_failover_hosts_t *host = NULL; + + priv = this->private; + + if (priv->pass_through) { + gf_msg_trace(this->name, 0, + "child is up, hence not " + "performing any failover"); + goto out; + } + + list_for_each_entry(failover_host, &priv->failover_list, list) + { + if (failover_host->tried == 0) { + host = failover_host; + failover_host->tried = 1; + break; + } + } + if (!host) { + /*TODO: Keep trying until any of the gfproxy comes back up. + Currently it tries failing over once for each host, + if it doesn't succeed then returns error to mount point + list_for_each_entry (failover_host, + &priv->failover_list, list) { + failover_host->tried = 0; + }*/ + gf_msg_debug(this->name, 0, + "all the failover hosts have " + "been tried and looks like didn't succeed"); + ret = -1; + goto out; + } + + frame = create_frame(this, this->ctx->pool); + + dict = dict_new(); + + ret = dict_set_dynstr(dict, CLIENT_CMD_CONNECT, gf_strdup(host->addr)); + + gf_msg_trace(this->name, 0, "Initiating failover to:%s", host->addr); + + STACK_WIND_COOKIE(frame, gf_quiesce_failover_cbk, NULL, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->setxattr, NULL, dict, 0, NULL); out: - if (dict) - dict_unref (dict); + if (dict) + dict_unref(dict); - return ret; + return ret; } call_stub_t * -gf_quiesce_dequeue (xlator_t *this) +gf_quiesce_dequeue(xlator_t *this) { - call_stub_t *stub = NULL; - quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; - priv = this->private; + priv = this->private; - if (!priv || list_empty (&priv->req)) - return NULL; + if (!priv || list_empty(&priv->req)) + return NULL; - LOCK (&priv->lock); - { - stub = list_entry (priv->req.next, call_stub_t, list); - list_del_init (&stub->list); - priv->queue_size--; - } - UNLOCK (&priv->lock); + LOCK(&priv->lock); + { + stub = list_entry(priv->req.next, call_stub_t, list); + list_del_init(&stub->list); + priv->queue_size--; + } + UNLOCK(&priv->lock); - return stub; + return stub; } void * -gf_quiesce_dequeue_start (void *data) +gf_quiesce_dequeue_start(void *data) { - xlator_t *this = NULL; - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + xlator_t *this = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - this = data; - priv = this->private; - THIS = this; + this = data; + priv = this->private; + THIS = this; - while (!list_empty (&priv->req)) { - stub = gf_quiesce_dequeue (this); - if (stub) { - call_resume (stub); - } + while (!list_empty(&priv->req)) { + stub = gf_quiesce_dequeue(this); + if (stub) { + call_resume(stub); } + } - return 0; + return 0; } - void -gf_quiesce_timeout (void *data) +gf_quiesce_timeout(void *data) { - xlator_t *this = NULL; - quiesce_priv_t *priv = NULL; - int ret = -1; + xlator_t *this = NULL; + quiesce_priv_t *priv = NULL; + int ret = -1; - this = data; - priv = this->private; - THIS = this; + this = data; + priv = this->private; + THIS = this; - LOCK (&priv->lock); - { - priv->timer = NULL; - if (priv->pass_through) { - UNLOCK (&priv->lock); - goto out; - } - ret = __gf_quiesce_perform_failover (THIS); + LOCK(&priv->lock); + { + priv->timer = NULL; + if (priv->pass_through) { + UNLOCK(&priv->lock); + goto out; } - UNLOCK (&priv->lock); + ret = __gf_quiesce_perform_failover(THIS); + } + UNLOCK(&priv->lock); - if (ret < 0) { - priv->pass_through = _gf_true; - gf_quiesce_dequeue_start (this); - } + if (ret < 0) { + priv->pass_through = _gf_true; + gf_quiesce_dequeue_start(this); + } out: - return; + return; } void -gf_quiesce_enqueue (xlator_t *this, call_stub_t *stub) +gf_quiesce_enqueue(xlator_t *this, call_stub_t *stub) { - quiesce_priv_t *priv = NULL; - - priv = this->private; - if (!priv) { - gf_log_callingfn (this->name, GF_LOG_ERROR, - "this->private == NULL"); - return; - } - - LOCK (&priv->lock); - { - list_add_tail (&stub->list, &priv->req); - priv->queue_size++; - __gf_quiesce_start_timer (this, priv); - } - UNLOCK (&priv->lock); + quiesce_priv_t *priv = NULL; + priv = this->private; + if (!priv) { + gf_log_callingfn(this->name, GF_LOG_ERROR, "this->private == NULL"); return; -} + } + LOCK(&priv->lock); + { + list_add_tail(&stub->list, &priv->req); + priv->queue_size++; + __gf_quiesce_start_timer(this, priv); + } + UNLOCK(&priv->lock); + return; +} /* _CBK function section */ int32_t -quiesce_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, inode_t *inode, - struct iatt *buf, dict_t *dict, struct iatt *postparent) +quiesce_lookup_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, dict_t *dict, struct iatt *postparent) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_lookup_stub (frame, default_lookup_resume, - &local->loc, local->dict); - if (!stub) { - STACK_UNWIND_STRICT (lookup, frame, -1, ENOMEM, - NULL, NULL, NULL, NULL); - goto out; - } - - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_lookup_stub(frame, default_lookup_resume, &local->loc, + local->dict); + if (!stub) { + STACK_UNWIND_STRICT(lookup, frame, -1, ENOMEM, NULL, NULL, NULL, + NULL); + goto out; } - STACK_UNWIND_STRICT (lookup, frame, op_ret, op_errno, inode, buf, - dict, postparent); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(lookup, frame, op_ret, op_errno, inode, buf, dict, + postparent); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } int32_t -quiesce_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *buf, - dict_t *xdata) +quiesce_stat_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *buf, + dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_stat_stub (frame, default_stat_resume, - &local->loc, xdata); - if (!stub) { - STACK_UNWIND_STRICT (stat, frame, -1, ENOMEM, - NULL, NULL); - goto out; - } - - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_stat_stub(frame, default_stat_resume, &local->loc, xdata); + if (!stub) { + STACK_UNWIND_STRICT(stat, frame, -1, ENOMEM, NULL, NULL); + goto out; } - STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(stat, frame, op_ret, op_errno, buf, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } int32_t -quiesce_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata) +quiesce_access_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_access_stub (frame, default_access_resume, - &local->loc, local->flag, xdata); - if (!stub) { - STACK_UNWIND_STRICT (access, frame, -1, ENOMEM, NULL); - goto out; - } - - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_access_stub(frame, default_access_resume, &local->loc, + local->flag, xdata); + if (!stub) { + STACK_UNWIND_STRICT(access, frame, -1, ENOMEM, NULL); + goto out; } - STACK_UNWIND_STRICT (access, frame, op_ret, op_errno, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(access, frame, op_ret, op_errno, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } int32_t -quiesce_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, const char *path, - struct iatt *buf, dict_t *xdata) +quiesce_readlink_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, const char *path, + struct iatt *buf, dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_readlink_stub (frame, default_readlink_resume, - &local->loc, local->size, xdata); - if (!stub) { - STACK_UNWIND_STRICT (readlink, frame, -1, ENOMEM, - NULL, NULL, NULL); - goto out; - } - - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_readlink_stub(frame, default_readlink_resume, &local->loc, + local->size, xdata); + if (!stub) { + STACK_UNWIND_STRICT(readlink, frame, -1, ENOMEM, NULL, NULL, NULL); + goto out; } - STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, path, buf, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(readlink, frame, op_ret, op_errno, path, buf, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } int32_t -quiesce_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata) +quiesce_open_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_open_stub (frame, default_open_resume, - &local->loc, local->flag, local->fd, - xdata); - if (!stub) { - STACK_UNWIND_STRICT (open, frame, -1, ENOMEM, - NULL, NULL); - goto out; - } + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_open_stub(frame, default_open_resume, &local->loc, + local->flag, local->fd, xdata); + if (!stub) { + STACK_UNWIND_STRICT(open, frame, -1, ENOMEM, NULL, NULL); + goto out; } - STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(open, frame, op_ret, op_errno, fd, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } int32_t -quiesce_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iovec *vector, - int32_t count, struct iatt *stbuf, struct iobref *iobref, dict_t *xdata) +quiesce_readv_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iovec *vector, + int32_t count, struct iatt *stbuf, struct iobref *iobref, + dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_readv_stub (frame, default_readv_resume, - local->fd, local->size, local->offset, - local->io_flag, xdata); - if (!stub) { - STACK_UNWIND_STRICT (readv, frame, -1, ENOMEM, - NULL, 0, NULL, NULL, NULL); - goto out; - } + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_readv_stub(frame, default_readv_resume, local->fd, + local->size, local->offset, local->io_flag, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(readv, frame, -1, ENOMEM, NULL, 0, NULL, NULL, + NULL); + goto out; } - STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, vector, count, - stbuf, iobref, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(readv, frame, op_ret, op_errno, vector, count, stbuf, + iobref, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } int32_t -quiesce_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata) +quiesce_flush_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_flush_stub (frame, default_flush_resume, - local->fd, xdata); - if (!stub) { - STACK_UNWIND_STRICT (flush, frame, -1, ENOMEM, NULL); - goto out; - } + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_flush_stub(frame, default_flush_resume, local->fd, xdata); + if (!stub) { + STACK_UNWIND_STRICT(flush, frame, -1, ENOMEM, NULL); + goto out; } - STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(flush, frame, op_ret, op_errno, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } - - int32_t -quiesce_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *prebuf, - struct iatt *postbuf, dict_t *xdata) +quiesce_fsync_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_fsync_stub (frame, default_fsync_resume, - local->fd, local->flag, xdata); - if (!stub) { - STACK_UNWIND_STRICT (fsync, frame, -1, ENOMEM, - NULL, NULL, NULL); - goto out; - } + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_fsync_stub(frame, default_fsync_resume, local->fd, + local->flag, xdata); + if (!stub) { + STACK_UNWIND_STRICT(fsync, frame, -1, ENOMEM, NULL, NULL, NULL); + goto out; } - STACK_UNWIND_STRICT (fsync, frame, op_ret, op_errno, prebuf, postbuf, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(fsync, frame, op_ret, op_errno, prebuf, postbuf, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } int32_t -quiesce_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *buf, dict_t *xdata) +quiesce_fstat_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *buf, + dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_fstat_stub (frame, default_fstat_resume, - local->fd, xdata); - if (!stub) { - STACK_UNWIND_STRICT (fstat, frame, -1, ENOMEM, - NULL, NULL); - goto out; - } + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_fstat_stub(frame, default_fstat_resume, local->fd, xdata); + if (!stub) { + STACK_UNWIND_STRICT(fstat, frame, -1, ENOMEM, NULL, NULL); + goto out; } - STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(fstat, frame, op_ret, op_errno, buf, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } int32_t -quiesce_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata) +quiesce_opendir_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_opendir_stub (frame, default_opendir_resume, - &local->loc, local->fd, xdata); - if (!stub) { - STACK_UNWIND_STRICT (opendir, frame, -1, ENOMEM, - NULL, NULL); - goto out; - } + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_opendir_stub(frame, default_opendir_resume, &local->loc, + local->fd, xdata); + if (!stub) { + STACK_UNWIND_STRICT(opendir, frame, -1, ENOMEM, NULL, NULL); + goto out; } - STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(opendir, frame, op_ret, op_errno, fd, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } int32_t -quiesce_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata) +quiesce_fsyncdir_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_fsyncdir_stub (frame, default_fsyncdir_resume, - local->fd, local->flag, xdata); - if (!stub) { - STACK_UNWIND_STRICT (fsyncdir, frame, -1, ENOMEM, NULL); - goto out; - } + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_fsyncdir_stub(frame, default_fsyncdir_resume, local->fd, + local->flag, xdata); + if (!stub) { + STACK_UNWIND_STRICT(fsyncdir, frame, -1, ENOMEM, NULL); + goto out; } - STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(fsyncdir, frame, op_ret, op_errno, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } int32_t -quiesce_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct statvfs *buf, dict_t *xdata) +quiesce_statfs_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct statvfs *buf, + dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_statfs_stub (frame, default_statfs_resume, - &local->loc, xdata); - if (!stub) { - STACK_UNWIND_STRICT (statfs, frame, -1, ENOMEM, - NULL, NULL); - goto out; - } - - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_statfs_stub(frame, default_statfs_resume, &local->loc, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(statfs, frame, -1, ENOMEM, NULL, NULL); + goto out; } - STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(statfs, frame, op_ret, op_errno, buf, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } int32_t -quiesce_fgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *dict, dict_t *xdata) +quiesce_fgetxattr_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *dict, + dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_fgetxattr_stub (frame, default_fgetxattr_resume, - local->fd, local->name, xdata); - if (!stub) { - STACK_UNWIND_STRICT (fgetxattr, frame, -1, ENOMEM, - NULL, NULL); - goto out; - } - - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_fgetxattr_stub(frame, default_fgetxattr_resume, local->fd, + local->name, xdata); + if (!stub) { + STACK_UNWIND_STRICT(fgetxattr, frame, -1, ENOMEM, NULL, NULL); + goto out; } - STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict, xdata); -out: - gf_quiesce_local_wipe (this, local); - - return 0; -} - + gf_quiesce_enqueue(this, stub); + goto out; + } -int32_t -quiesce_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *dict, dict_t *xdata) -{ - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + STACK_UNWIND_STRICT(fgetxattr, frame, op_ret, op_errno, dict, xdata); +out: + gf_quiesce_local_wipe(this, local); - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_getxattr_stub (frame, default_getxattr_resume, - &local->loc, local->name, xdata); - if (!stub) { - STACK_UNWIND_STRICT (getxattr, frame, -1, ENOMEM, - NULL, NULL); - goto out; - } + return 0; +} - gf_quiesce_enqueue (this, stub); - goto out; +int32_t +quiesce_getxattr_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *dict, + dict_t *xdata) +{ + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; + + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_getxattr_stub(frame, default_getxattr_resume, &local->loc, + local->name, xdata); + if (!stub) { + STACK_UNWIND_STRICT(getxattr, frame, -1, ENOMEM, NULL, NULL); + goto out; } - STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(getxattr, frame, op_ret, op_errno, dict, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } - int32_t -quiesce_rchecksum_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, uint32_t weak_checksum, - uint8_t *strong_checksum, dict_t *xdata) +quiesce_rchecksum_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, uint32_t weak_checksum, + uint8_t *strong_checksum, dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_rchecksum_stub (frame, default_rchecksum_resume, - local->fd, local->offset, local->flag, xdata); - if (!stub) { - STACK_UNWIND_STRICT (rchecksum, frame, -1, ENOMEM, - 0, NULL, NULL); - goto out; - } + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_rchecksum_stub(frame, default_rchecksum_resume, local->fd, + local->offset, local->flag, xdata); + if (!stub) { + STACK_UNWIND_STRICT(rchecksum, frame, -1, ENOMEM, 0, NULL, NULL); + goto out; } - STACK_UNWIND_STRICT (rchecksum, frame, op_ret, op_errno, weak_checksum, - strong_checksum, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(rchecksum, frame, op_ret, op_errno, weak_checksum, + strong_checksum, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } - int32_t -quiesce_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, dict_t *xdata) +quiesce_readdir_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, + dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_readdir_stub (frame, default_readdir_resume, - local->fd, local->size, local->offset, xdata); - if (!stub) { - STACK_UNWIND_STRICT (readdir, frame, -1, ENOMEM, - NULL, NULL); - goto out; - } + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_readdir_stub(frame, default_readdir_resume, local->fd, + local->size, local->offset, xdata); + if (!stub) { + STACK_UNWIND_STRICT(readdir, frame, -1, ENOMEM, NULL, NULL); + goto out; } - STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, entries, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(readdir, frame, op_ret, op_errno, entries, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } - int32_t -quiesce_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, dict_t *xdata) +quiesce_readdirp_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, + dict_t *xdata) { - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_readdirp_stub (frame, default_readdirp_resume, - local->fd, local->size, local->offset, - local->dict); - if (!stub) { - STACK_UNWIND_STRICT (readdirp, frame, -1, ENOMEM, - NULL, NULL); - goto out; - } - - gf_quiesce_enqueue (this, stub); - goto out; + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_readdirp_stub(frame, default_readdirp_resume, local->fd, + local->size, local->offset, local->dict); + if (!stub) { + STACK_UNWIND_STRICT(readdirp, frame, -1, ENOMEM, NULL, NULL); + goto out; } - STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, entries, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(readdirp, frame, op_ret, op_errno, entries, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } - #if 0 int32_t @@ -1180,1740 +1155,1507 @@ out: #endif /* if 0 */ - /* FOP */ /* No retransmittion */ int32_t -quiesce_removexattr (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - const char *name, dict_t *xdata) +quiesce_removexattr(call_frame_t *frame, xlator_t *this, loc_t *loc, + const char *name, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv->pass_through) { - STACK_WIND (frame, - default_removexattr_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->removexattr, - loc, - name, xdata); - return 0; - } + if (priv->pass_through) { + STACK_WIND(frame, default_removexattr_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->removexattr, loc, name, xdata); + return 0; + } - stub = fop_removexattr_stub (frame, default_removexattr_resume, - loc, name, xdata); - if (!stub) { - STACK_UNWIND_STRICT (removexattr, frame, -1, ENOMEM, NULL); - return 0; - } + stub = fop_removexattr_stub(frame, default_removexattr_resume, loc, name, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(removexattr, frame, -1, ENOMEM, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_truncate (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - off_t offset, dict_t *xdata) +quiesce_truncate(call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, + dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv->pass_through) { - STACK_WIND (frame, - default_truncate_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->truncate, - loc, - offset, xdata); - return 0; - } + if (priv->pass_through) { + STACK_WIND(frame, default_truncate_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->truncate, loc, offset, xdata); + return 0; + } - stub = fop_truncate_stub (frame, default_truncate_resume, loc, offset, xdata); - if (!stub) { - STACK_UNWIND_STRICT (truncate, frame, -1, ENOMEM, NULL, NULL, NULL); - return 0; - } + stub = fop_truncate_stub(frame, default_truncate_resume, loc, offset, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(truncate, frame, -1, ENOMEM, NULL, NULL, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_fsetxattr (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - dict_t *dict, - int32_t flags, dict_t *xdata) +quiesce_fsetxattr(call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict, + int32_t flags, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv->pass_through) { - STACK_WIND (frame, - default_fsetxattr_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->fsetxattr, - fd, - dict, - flags, xdata); - return 0; - } + if (priv->pass_through) { + STACK_WIND(frame, default_fsetxattr_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->fsetxattr, fd, dict, flags, xdata); + return 0; + } - stub = fop_fsetxattr_stub (frame, default_fsetxattr_resume, - fd, dict, flags, xdata); - if (!stub) { - STACK_UNWIND_STRICT (fsetxattr, frame, -1, ENOMEM, NULL); - return 0; - } + stub = fop_fsetxattr_stub(frame, default_fsetxattr_resume, fd, dict, flags, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(fsetxattr, frame, -1, ENOMEM, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_setxattr (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - dict_t *dict, - int32_t flags, dict_t *xdata) +quiesce_setxattr(call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, + int32_t flags, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv->pass_through) { - STACK_WIND (frame, - default_setxattr_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->setxattr, - loc, - dict, - flags, xdata); - return 0; - } + if (priv->pass_through) { + STACK_WIND(frame, default_setxattr_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->setxattr, loc, dict, flags, xdata); + return 0; + } - stub = fop_setxattr_stub (frame, default_setxattr_resume, - loc, dict, flags, xdata); - if (!stub) { - STACK_UNWIND_STRICT (setxattr, frame, -1, ENOMEM, NULL); - return 0; - } + stub = fop_setxattr_stub(frame, default_setxattr_resume, loc, dict, flags, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(setxattr, frame, -1, ENOMEM, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_create (call_frame_t *frame, xlator_t *this, - loc_t *loc, int32_t flags, mode_t mode, - mode_t umask, fd_t *fd, dict_t *xdata) +quiesce_create(call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, + mode_t mode, mode_t umask, fd_t *fd, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv->pass_through) { - /* Don't send O_APPEND below, as write() re-transmittions can - fail with O_APPEND */ - STACK_WIND (frame, default_create_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->create, - loc, (flags & ~O_APPEND), mode, umask, fd, xdata); - return 0; - } + if (priv->pass_through) { + /* Don't send O_APPEND below, as write() re-transmittions can + fail with O_APPEND */ + STACK_WIND(frame, default_create_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->create, loc, (flags & ~O_APPEND), + mode, umask, fd, xdata); + return 0; + } - stub = fop_create_stub (frame, default_create_resume, - loc, (flags & ~O_APPEND), mode, umask, fd, xdata); - if (!stub) { - STACK_UNWIND_STRICT (create, frame, -1, ENOMEM, - NULL, NULL, NULL, NULL, NULL, NULL); - return 0; - } + stub = fop_create_stub(frame, default_create_resume, loc, + (flags & ~O_APPEND), mode, umask, fd, xdata); + if (!stub) { + STACK_UNWIND_STRICT(create, frame, -1, ENOMEM, NULL, NULL, NULL, NULL, + NULL, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_link (call_frame_t *frame, - xlator_t *this, - loc_t *oldloc, - loc_t *newloc, dict_t *xdata) +quiesce_link(call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, + dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv->pass_through) { - STACK_WIND (frame, - default_link_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->link, - oldloc, newloc, xdata); - return 0; - } + if (priv->pass_through) { + STACK_WIND(frame, default_link_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->link, oldloc, newloc, xdata); + return 0; + } - stub = fop_link_stub (frame, default_link_resume, oldloc, newloc, xdata); - if (!stub) { - STACK_UNWIND_STRICT (link, frame, -1, ENOMEM, - NULL, NULL, NULL, NULL, NULL); - return 0; - } + stub = fop_link_stub(frame, default_link_resume, oldloc, newloc, xdata); + if (!stub) { + STACK_UNWIND_STRICT(link, frame, -1, ENOMEM, NULL, NULL, NULL, NULL, + NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_rename (call_frame_t *frame, - xlator_t *this, - loc_t *oldloc, - loc_t *newloc, dict_t *xdata) +quiesce_rename(call_frame_t *frame, xlator_t *this, loc_t *oldloc, + loc_t *newloc, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv->pass_through) { - STACK_WIND (frame, - default_rename_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->rename, - oldloc, newloc, xdata); - return 0; - } + if (priv->pass_through) { + STACK_WIND(frame, default_rename_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->rename, oldloc, newloc, xdata); + return 0; + } - stub = fop_rename_stub (frame, default_rename_resume, oldloc, newloc, xdata); - if (!stub) { - STACK_UNWIND_STRICT (rename, frame, -1, ENOMEM, - NULL, NULL, NULL, NULL, NULL, NULL); - return 0; - } + stub = fop_rename_stub(frame, default_rename_resume, oldloc, newloc, xdata); + if (!stub) { + STACK_UNWIND_STRICT(rename, frame, -1, ENOMEM, NULL, NULL, NULL, NULL, + NULL, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } - int -quiesce_symlink (call_frame_t *frame, xlator_t *this, - const char *linkpath, loc_t *loc, mode_t umask, dict_t *xdata) +quiesce_symlink(call_frame_t *frame, xlator_t *this, const char *linkpath, + loc_t *loc, mode_t umask, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv->pass_through) { - STACK_WIND (frame, default_symlink_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->symlink, - linkpath, loc, umask, xdata); - return 0; - } + if (priv->pass_through) { + STACK_WIND(frame, default_symlink_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->symlink, linkpath, loc, umask, + xdata); + return 0; + } - stub = fop_symlink_stub (frame, default_symlink_resume, - linkpath, loc, umask, xdata); - if (!stub) { - STACK_UNWIND_STRICT (symlink, frame, -1, ENOMEM, - NULL, NULL, NULL, NULL, NULL); - return 0; - } + stub = fop_symlink_stub(frame, default_symlink_resume, linkpath, loc, umask, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(symlink, frame, -1, ENOMEM, NULL, NULL, NULL, NULL, + NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } - int -quiesce_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, dict_t *xdata) +quiesce_rmdir(call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, + dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv->pass_through) { - STACK_WIND (frame, default_rmdir_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->rmdir, - loc, flags, xdata); - return 0; - } + if (priv->pass_through) { + STACK_WIND(frame, default_rmdir_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->rmdir, loc, flags, xdata); + return 0; + } - stub = fop_rmdir_stub (frame, default_rmdir_resume, loc, flags, xdata); - if (!stub) { - STACK_UNWIND_STRICT (rmdir, frame, -1, ENOMEM, NULL, NULL, NULL); - return 0; - } + stub = fop_rmdir_stub(frame, default_rmdir_resume, loc, flags, xdata); + if (!stub) { + STACK_UNWIND_STRICT(rmdir, frame, -1, ENOMEM, NULL, NULL, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_unlink (call_frame_t *frame, - xlator_t *this, - loc_t *loc, int xflag, dict_t *xdata) +quiesce_unlink(call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, + dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv->pass_through) { - STACK_WIND (frame, - default_unlink_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->unlink, - loc, xflag, xdata); - return 0; - } + if (priv->pass_through) { + STACK_WIND(frame, default_unlink_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->unlink, loc, xflag, xdata); + return 0; + } - stub = fop_unlink_stub (frame, default_unlink_resume, loc, xflag, xdata); - if (!stub) { - STACK_UNWIND_STRICT (unlink, frame, -1, ENOMEM, NULL, NULL, NULL); - return 0; - } + stub = fop_unlink_stub(frame, default_unlink_resume, loc, xflag, xdata); + if (!stub) { + STACK_UNWIND_STRICT(unlink, frame, -1, ENOMEM, NULL, NULL, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int -quiesce_mkdir (call_frame_t *frame, xlator_t *this, - loc_t *loc, mode_t mode, mode_t umask, dict_t *xdata) +quiesce_mkdir(call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, + mode_t umask, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv->pass_through) { - STACK_WIND (frame, default_mkdir_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->mkdir, - loc, mode, umask, xdata); - return 0; - } + if (priv->pass_through) { + STACK_WIND(frame, default_mkdir_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->mkdir, loc, mode, umask, xdata); + return 0; + } - stub = fop_mkdir_stub (frame, default_mkdir_resume, - loc, mode, umask, xdata); - if (!stub) { - STACK_UNWIND_STRICT (mkdir, frame, -1, ENOMEM, - NULL, NULL, NULL, NULL, NULL); - return 0; - } + stub = fop_mkdir_stub(frame, default_mkdir_resume, loc, mode, umask, xdata); + if (!stub) { + STACK_UNWIND_STRICT(mkdir, frame, -1, ENOMEM, NULL, NULL, NULL, NULL, + NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } - int -quiesce_mknod (call_frame_t *frame, xlator_t *this, - loc_t *loc, mode_t mode, dev_t rdev, mode_t umask, dict_t *xdata) +quiesce_mknod(call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, + dev_t rdev, mode_t umask, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv->pass_through) { - STACK_WIND (frame, default_mknod_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->mknod, - loc, mode, rdev, umask, xdata); - return 0; - } + if (priv->pass_through) { + STACK_WIND(frame, default_mknod_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->mknod, loc, mode, rdev, umask, + xdata); + return 0; + } - stub = fop_mknod_stub (frame, default_mknod_resume, - loc, mode, rdev, umask, xdata); - if (!stub) { - STACK_UNWIND_STRICT (mknod, frame, -1, ENOMEM, - NULL, NULL, NULL, NULL, NULL); - return 0; - } + stub = fop_mknod_stub(frame, default_mknod_resume, loc, mode, rdev, umask, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(mknod, frame, -1, ENOMEM, NULL, NULL, NULL, NULL, + NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_ftruncate (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - off_t offset, dict_t *xdata) +quiesce_ftruncate(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, + dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv->pass_through) { - STACK_WIND (frame, - default_ftruncate_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->ftruncate, - fd, - offset, xdata); - return 0; - } + if (priv->pass_through) { + STACK_WIND(frame, default_ftruncate_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->ftruncate, fd, offset, xdata); + return 0; + } - stub = fop_ftruncate_stub (frame, default_ftruncate_resume, fd, offset, xdata); - if (!stub) { - STACK_UNWIND_STRICT (ftruncate, frame, -1, ENOMEM, NULL, NULL, NULL); - return 0; - } + stub = fop_ftruncate_stub(frame, default_ftruncate_resume, fd, offset, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(ftruncate, frame, -1, ENOMEM, NULL, NULL, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } /* Re-transmittion */ int32_t -quiesce_readlink (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - size_t size, dict_t *xdata) +quiesce_readlink(call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size, + dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - priv = this->private; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - loc_dup (loc, &local->loc); - local->size = size; - frame->local = local; - - STACK_WIND (frame, - quiesce_readlink_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->readlink, - loc, - size, xdata); - return 0; - } + priv = this->private; - stub = fop_readlink_stub (frame, default_readlink_resume, loc, size, xdata); - if (!stub) { - STACK_UNWIND_STRICT (readlink, frame, -1, ENOMEM, NULL, NULL, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + loc_dup(loc, &local->loc); + local->size = size; + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_readlink_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->readlink, loc, size, xdata); + return 0; + } + stub = fop_readlink_stub(frame, default_readlink_resume, loc, size, xdata); + if (!stub) { + STACK_UNWIND_STRICT(readlink, frame, -1, ENOMEM, NULL, NULL, NULL); return 0; -} + } + gf_quiesce_enqueue(this, stub); + + return 0; +} int32_t -quiesce_access (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t mask, dict_t *xdata) +quiesce_access(call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask, + dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - priv = this->private; - - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - loc_dup (loc, &local->loc); - local->flag = mask; - frame->local = local; - - STACK_WIND (frame, - quiesce_access_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->access, - loc, - mask, xdata); - return 0; - } + priv = this->private; - stub = fop_access_stub (frame, default_access_resume, loc, mask, xdata); - if (!stub) { - STACK_UNWIND_STRICT (access, frame, -1, ENOMEM, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + loc_dup(loc, &local->loc); + local->flag = mask; + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_access_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->access, loc, mask, xdata); + return 0; + } + stub = fop_access_stub(frame, default_access_resume, loc, mask, xdata); + if (!stub) { + STACK_UNWIND_STRICT(access, frame, -1, ENOMEM, NULL); return 0; + } + + gf_quiesce_enqueue(this, stub); + + return 0; } int32_t -quiesce_fgetxattr (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - const char *name, dict_t *xdata) +quiesce_fgetxattr(call_frame_t *frame, xlator_t *this, fd_t *fd, + const char *name, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - priv = this->private; + priv = this->private; - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - local->fd = fd_ref (fd); - if (name) - local->name = gf_strdup (name); - - frame->local = local; - - STACK_WIND (frame, - quiesce_fgetxattr_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->fgetxattr, - fd, - name, xdata); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + local->fd = fd_ref(fd); + if (name) + local->name = gf_strdup(name); - stub = fop_fgetxattr_stub (frame, default_fgetxattr_resume, fd, name, xdata); - if (!stub) { - STACK_UNWIND_STRICT (fgetxattr, frame, -1, ENOMEM, NULL, NULL); - return 0; - } + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_fgetxattr_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->fgetxattr, fd, name, xdata); + return 0; + } + stub = fop_fgetxattr_stub(frame, default_fgetxattr_resume, fd, name, xdata); + if (!stub) { + STACK_UNWIND_STRICT(fgetxattr, frame, -1, ENOMEM, NULL, NULL); return 0; + } + + gf_quiesce_enqueue(this, stub); + + return 0; } int32_t -quiesce_statfs (call_frame_t *frame, - xlator_t *this, - loc_t *loc, dict_t *xdata) +quiesce_statfs(call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - priv = this->private; - - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - loc_dup (loc, &local->loc); - frame->local = local; - - STACK_WIND (frame, - quiesce_statfs_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->statfs, - loc, xdata); - return 0; - } + priv = this->private; - stub = fop_statfs_stub (frame, default_statfs_resume, loc, xdata); - if (!stub) { - STACK_UNWIND_STRICT (statfs, frame, -1, ENOMEM, NULL, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + loc_dup(loc, &local->loc); + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_statfs_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->statfs, loc, xdata); + return 0; + } + stub = fop_statfs_stub(frame, default_statfs_resume, loc, xdata); + if (!stub) { + STACK_UNWIND_STRICT(statfs, frame, -1, ENOMEM, NULL, NULL); return 0; + } + + gf_quiesce_enqueue(this, stub); + + return 0; } int32_t -quiesce_fsyncdir (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t flags, dict_t *xdata) +quiesce_fsyncdir(call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, + dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - priv = this->private; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - local->fd = fd_ref (fd); - local->flag = flags; - frame->local = local; - - STACK_WIND (frame, - quiesce_fsyncdir_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->fsyncdir, - fd, - flags, xdata); - return 0; - } + priv = this->private; - stub = fop_fsyncdir_stub (frame, default_fsyncdir_resume, fd, flags, xdata); - if (!stub) { - STACK_UNWIND_STRICT (fsyncdir, frame, -1, ENOMEM, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + local->fd = fd_ref(fd); + local->flag = flags; + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_fsyncdir_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->fsyncdir, fd, flags, xdata); + return 0; + } + stub = fop_fsyncdir_stub(frame, default_fsyncdir_resume, fd, flags, xdata); + if (!stub) { + STACK_UNWIND_STRICT(fsyncdir, frame, -1, ENOMEM, NULL); return 0; + } + + gf_quiesce_enqueue(this, stub); + + return 0; } int32_t -quiesce_opendir (call_frame_t *frame, - xlator_t *this, - loc_t *loc, fd_t *fd, dict_t *xdata) +quiesce_opendir(call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, + dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - priv = this->private; - - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - loc_dup (loc, &local->loc); - local->fd = fd_ref (fd); - frame->local = local; - - STACK_WIND (frame, - quiesce_opendir_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->opendir, - loc, fd, xdata); - return 0; - } + priv = this->private; - stub = fop_opendir_stub (frame, default_opendir_resume, loc, fd, xdata); - if (!stub) { - STACK_UNWIND_STRICT (opendir, frame, -1, ENOMEM, NULL, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + loc_dup(loc, &local->loc); + local->fd = fd_ref(fd); + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_opendir_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->opendir, loc, fd, xdata); + return 0; + } + stub = fop_opendir_stub(frame, default_opendir_resume, loc, fd, xdata); + if (!stub) { + STACK_UNWIND_STRICT(opendir, frame, -1, ENOMEM, NULL, NULL); return 0; + } + + gf_quiesce_enqueue(this, stub); + + return 0; } int32_t -quiesce_fstat (call_frame_t *frame, - xlator_t *this, - fd_t *fd, dict_t *xdata) +quiesce_fstat(call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - priv = this->private; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - local->fd = fd_ref (fd); - frame->local = local; - - STACK_WIND (frame, - quiesce_fstat_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->fstat, - fd, xdata); - return 0; - } - - stub = fop_fstat_stub (frame, default_fstat_resume, fd, xdata); - if (!stub) { - STACK_UNWIND_STRICT (fstat, frame, -1, ENOMEM, NULL, NULL); - return 0; - } + priv = this->private; - gf_quiesce_enqueue (this, stub); + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + local->fd = fd_ref(fd); + frame->local = local; + STACK_WIND(frame, quiesce_fstat_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->fstat, fd, xdata); return 0; + } + + stub = fop_fstat_stub(frame, default_fstat_resume, fd, xdata); + if (!stub) { + STACK_UNWIND_STRICT(fstat, frame, -1, ENOMEM, NULL, NULL); + return 0; + } + + gf_quiesce_enqueue(this, stub); + + return 0; } int32_t -quiesce_fsync (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t flags, dict_t *xdata) +quiesce_fsync(call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, + dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - priv = this->private; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - local->fd = fd_ref (fd); - local->flag = flags; - frame->local = local; - - STACK_WIND (frame, - quiesce_fsync_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->fsync, - fd, - flags, xdata); - return 0; - } + priv = this->private; - stub = fop_fsync_stub (frame, default_fsync_resume, fd, flags, xdata); - if (!stub) { - STACK_UNWIND_STRICT (fsync, frame, -1, ENOMEM, NULL, NULL, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + local->fd = fd_ref(fd); + local->flag = flags; + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_fsync_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->fsync, fd, flags, xdata); + return 0; + } + stub = fop_fsync_stub(frame, default_fsync_resume, fd, flags, xdata); + if (!stub) { + STACK_UNWIND_STRICT(fsync, frame, -1, ENOMEM, NULL, NULL, NULL); return 0; + } + + gf_quiesce_enqueue(this, stub); + + return 0; } int32_t -quiesce_flush (call_frame_t *frame, - xlator_t *this, - fd_t *fd, dict_t *xdata) +quiesce_flush(call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - priv = this->private; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - local->fd = fd_ref (fd); - frame->local = local; - - STACK_WIND (frame, - quiesce_flush_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->flush, - fd, xdata); - return 0; - } + priv = this->private; - stub = fop_flush_stub (frame, default_flush_resume, fd, xdata); - if (!stub) { - STACK_UNWIND_STRICT (flush, frame, -1, ENOMEM, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + local->fd = fd_ref(fd); + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_flush_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->flush, fd, xdata); + return 0; + } + stub = fop_flush_stub(frame, default_flush_resume, fd, xdata); + if (!stub) { + STACK_UNWIND_STRICT(flush, frame, -1, ENOMEM, NULL); return 0; + } + + gf_quiesce_enqueue(this, stub); + + return 0; } int32_t -quiesce_writev (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - struct iovec *vector, - int32_t count, - off_t off, uint32_t flags, - struct iobref *iobref, dict_t *xdata) +quiesce_writev(call_frame_t *frame, xlator_t *this, fd_t *fd, + struct iovec *vector, int32_t count, off_t off, uint32_t flags, + struct iobref *iobref, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv && priv->pass_through) { - STACK_WIND (frame, - default_writev_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->writev, - fd, - vector, - count, - off, flags, - iobref, xdata); - return 0; - } + if (priv && priv->pass_through) { + STACK_WIND(frame, default_writev_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->writev, fd, vector, count, off, + flags, iobref, xdata); + return 0; + } - stub = fop_writev_stub (frame, default_writev_resume, - fd, vector, count, off, flags, iobref, xdata); - if (!stub) { - STACK_UNWIND_STRICT (writev, frame, -1, ENOMEM, NULL, NULL, NULL); - return 0; - } + stub = fop_writev_stub(frame, default_writev_resume, fd, vector, count, off, + flags, iobref, xdata); + if (!stub) { + STACK_UNWIND_STRICT(writev, frame, -1, ENOMEM, NULL, NULL, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_readv (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, - off_t offset, uint32_t flags, dict_t *xdata) +quiesce_readv(call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, + off_t offset, uint32_t flags, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - priv = this->private; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - local->fd = fd_ref (fd); - local->size = size; - local->offset = offset; - local->io_flag = flags; - frame->local = local; - - STACK_WIND (frame, - quiesce_readv_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->readv, - fd, - size, - offset, flags, xdata); - return 0; - } + priv = this->private; - stub = fop_readv_stub (frame, default_readv_resume, fd, size, offset, - flags, xdata); - if (!stub) { - STACK_UNWIND_STRICT (readv, frame, -1, ENOMEM, - NULL, 0, NULL, NULL, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + local->fd = fd_ref(fd); + local->size = size; + local->offset = offset; + local->io_flag = flags; + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_readv_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->readv, fd, size, offset, flags, + xdata); + return 0; + } + stub = fop_readv_stub(frame, default_readv_resume, fd, size, offset, flags, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(readv, frame, -1, ENOMEM, NULL, 0, NULL, NULL, + NULL); return 0; -} + } + gf_quiesce_enqueue(this, stub); + + return 0; +} int32_t -quiesce_open (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t flags, fd_t *fd, - dict_t *xdata) +quiesce_open(call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, + fd_t *fd, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - priv = this->private; + priv = this->private; - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - loc_dup (loc, &local->loc); - local->fd = fd_ref (fd); - - /* Don't send O_APPEND below, as write() re-transmittions can - fail with O_APPEND */ - local->flag = (flags & ~O_APPEND); - frame->local = local; - - STACK_WIND (frame, - quiesce_open_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->open, - loc, (flags & ~O_APPEND), fd, xdata); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + loc_dup(loc, &local->loc); + local->fd = fd_ref(fd); - stub = fop_open_stub (frame, default_open_resume, loc, - (flags & ~O_APPEND), fd, xdata); - if (!stub) { - STACK_UNWIND_STRICT (open, frame, -1, ENOMEM, NULL, NULL); - return 0; - } + /* Don't send O_APPEND below, as write() re-transmittions can + fail with O_APPEND */ + local->flag = (flags & ~O_APPEND); + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_open_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->open, loc, (flags & ~O_APPEND), fd, + xdata); + return 0; + } + stub = fop_open_stub(frame, default_open_resume, loc, (flags & ~O_APPEND), + fd, xdata); + if (!stub) { + STACK_UNWIND_STRICT(open, frame, -1, ENOMEM, NULL, NULL); return 0; + } + + gf_quiesce_enqueue(this, stub); + + return 0; } int32_t -quiesce_getxattr (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - const char *name, dict_t *xdata) +quiesce_getxattr(call_frame_t *frame, xlator_t *this, loc_t *loc, + const char *name, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - priv = this->private; + priv = this->private; - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - loc_dup (loc, &local->loc); - if (name) - local->name = gf_strdup (name); - - frame->local = local; - - STACK_WIND (frame, - quiesce_getxattr_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->getxattr, - loc, - name, xdata); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + loc_dup(loc, &local->loc); + if (name) + local->name = gf_strdup(name); - stub = fop_getxattr_stub (frame, default_getxattr_resume, loc, name, xdata); - if (!stub) { - STACK_UNWIND_STRICT (getxattr, frame, -1, ENOMEM, NULL, NULL); - return 0; - } + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_getxattr_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->getxattr, loc, name, xdata); + return 0; + } + stub = fop_getxattr_stub(frame, default_getxattr_resume, loc, name, xdata); + if (!stub) { + STACK_UNWIND_STRICT(getxattr, frame, -1, ENOMEM, NULL, NULL); return 0; -} + } + gf_quiesce_enqueue(this, stub); + + return 0; +} int32_t -quiesce_xattrop (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - gf_xattrop_flags_t flags, - dict_t *dict, dict_t *xdata) +quiesce_xattrop(call_frame_t *frame, xlator_t *this, loc_t *loc, + gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv && priv->pass_through) { - STACK_WIND (frame, - default_xattrop_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->xattrop, - loc, - flags, - dict, xdata); - return 0; - } + if (priv && priv->pass_through) { + STACK_WIND(frame, default_xattrop_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->xattrop, loc, flags, dict, xdata); + return 0; + } - stub = fop_xattrop_stub (frame, default_xattrop_resume, - loc, flags, dict, xdata); - if (!stub) { - STACK_UNWIND_STRICT (xattrop, frame, -1, ENOMEM, NULL, NULL); - return 0; - } + stub = fop_xattrop_stub(frame, default_xattrop_resume, loc, flags, dict, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(xattrop, frame, -1, ENOMEM, NULL, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_fxattrop (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - gf_xattrop_flags_t flags, - dict_t *dict, dict_t *xdata) +quiesce_fxattrop(call_frame_t *frame, xlator_t *this, fd_t *fd, + gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv && priv->pass_through) { - STACK_WIND (frame, - default_fxattrop_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->fxattrop, - fd, - flags, - dict, xdata); - return 0; - } + if (priv && priv->pass_through) { + STACK_WIND(frame, default_fxattrop_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->fxattrop, fd, flags, dict, xdata); + return 0; + } - stub = fop_fxattrop_stub (frame, default_fxattrop_resume, - fd, flags, dict, xdata); - if (!stub) { - STACK_UNWIND_STRICT (fxattrop, frame, -1, ENOMEM, NULL, NULL); - return 0; - } + stub = fop_fxattrop_stub(frame, default_fxattrop_resume, fd, flags, dict, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(fxattrop, frame, -1, ENOMEM, NULL, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_lk (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t cmd, - struct gf_flock *lock, dict_t *xdata) +quiesce_lk(call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd, + struct gf_flock *lock, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv && priv->pass_through) { - STACK_WIND (frame, - default_lk_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->lk, - fd, - cmd, - lock, xdata); - return 0; - } + if (priv && priv->pass_through) { + STACK_WIND(frame, default_lk_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->lk, fd, cmd, lock, xdata); + return 0; + } - stub = fop_lk_stub (frame, default_lk_resume, fd, cmd, lock, xdata); - if (!stub) { - STACK_UNWIND_STRICT (lk, frame, -1, ENOMEM, NULL, NULL); - return 0; - } + stub = fop_lk_stub(frame, default_lk_resume, fd, cmd, lock, xdata); + if (!stub) { + STACK_UNWIND_STRICT(lk, frame, -1, ENOMEM, NULL, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } - int32_t -quiesce_inodelk (call_frame_t *frame, xlator_t *this, - const char *volume, loc_t *loc, int32_t cmd, - struct gf_flock *lock, dict_t *xdata) +quiesce_inodelk(call_frame_t *frame, xlator_t *this, const char *volume, + loc_t *loc, int32_t cmd, struct gf_flock *lock, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv && priv->pass_through) { - STACK_WIND (frame, - default_inodelk_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->inodelk, - volume, loc, cmd, lock, xdata); - return 0; - } + if (priv && priv->pass_through) { + STACK_WIND(frame, default_inodelk_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->inodelk, volume, loc, cmd, lock, + xdata); + return 0; + } - stub = fop_inodelk_stub (frame, default_inodelk_resume, - volume, loc, cmd, lock, xdata); - if (!stub) { - STACK_UNWIND_STRICT (inodelk, frame, -1, ENOMEM, NULL); - return 0; - } + stub = fop_inodelk_stub(frame, default_inodelk_resume, volume, loc, cmd, + lock, xdata); + if (!stub) { + STACK_UNWIND_STRICT(inodelk, frame, -1, ENOMEM, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_finodelk (call_frame_t *frame, xlator_t *this, - const char *volume, fd_t *fd, int32_t cmd, struct gf_flock *lock, dict_t *xdata) +quiesce_finodelk(call_frame_t *frame, xlator_t *this, const char *volume, + fd_t *fd, int32_t cmd, struct gf_flock *lock, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv && priv->pass_through) { - STACK_WIND (frame, - default_finodelk_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->finodelk, - volume, fd, cmd, lock, xdata); - return 0; - } + if (priv && priv->pass_through) { + STACK_WIND(frame, default_finodelk_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->finodelk, volume, fd, cmd, lock, + xdata); + return 0; + } - stub = fop_finodelk_stub (frame, default_finodelk_resume, - volume, fd, cmd, lock, xdata); - if (!stub) { - STACK_UNWIND_STRICT (finodelk, frame, -1, ENOMEM, NULL); - return 0; - } + stub = fop_finodelk_stub(frame, default_finodelk_resume, volume, fd, cmd, + lock, xdata); + if (!stub) { + STACK_UNWIND_STRICT(finodelk, frame, -1, ENOMEM, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_entrylk (call_frame_t *frame, xlator_t *this, - const char *volume, loc_t *loc, const char *basename, - entrylk_cmd cmd, entrylk_type type, dict_t *xdata) +quiesce_entrylk(call_frame_t *frame, xlator_t *this, const char *volume, + loc_t *loc, const char *basename, entrylk_cmd cmd, + entrylk_type type, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv && priv->pass_through) { - STACK_WIND (frame, default_entrylk_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->entrylk, - volume, loc, basename, cmd, type, xdata); - return 0; - } + if (priv && priv->pass_through) { + STACK_WIND(frame, default_entrylk_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->entrylk, volume, loc, basename, cmd, + type, xdata); + return 0; + } - stub = fop_entrylk_stub (frame, default_entrylk_resume, - volume, loc, basename, cmd, type, xdata); - if (!stub) { - STACK_UNWIND_STRICT (entrylk, frame, -1, ENOMEM, NULL); - return 0; - } + stub = fop_entrylk_stub(frame, default_entrylk_resume, volume, loc, + basename, cmd, type, xdata); + if (!stub) { + STACK_UNWIND_STRICT(entrylk, frame, -1, ENOMEM, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_fentrylk (call_frame_t *frame, xlator_t *this, - const char *volume, fd_t *fd, const char *basename, - entrylk_cmd cmd, entrylk_type type, dict_t *xdata) +quiesce_fentrylk(call_frame_t *frame, xlator_t *this, const char *volume, + fd_t *fd, const char *basename, entrylk_cmd cmd, + entrylk_type type, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv && priv->pass_through) { - STACK_WIND (frame, default_fentrylk_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->fentrylk, - volume, fd, basename, cmd, type, xdata); - return 0; - } + if (priv && priv->pass_through) { + STACK_WIND(frame, default_fentrylk_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->fentrylk, volume, fd, basename, cmd, + type, xdata); + return 0; + } - stub = fop_fentrylk_stub (frame, default_fentrylk_resume, - volume, fd, basename, cmd, type, xdata); - if (!stub) { - STACK_UNWIND_STRICT (fentrylk, frame, -1, ENOMEM, NULL); - return 0; - } + stub = fop_fentrylk_stub(frame, default_fentrylk_resume, volume, fd, + basename, cmd, type, xdata); + if (!stub) { + STACK_UNWIND_STRICT(fentrylk, frame, -1, ENOMEM, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_rchecksum (call_frame_t *frame, - xlator_t *this, - fd_t *fd, off_t offset, - int32_t len, dict_t *xdata) +quiesce_rchecksum(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, + int32_t len, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - priv = this->private; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - local->fd = fd_ref (fd); - local->offset = offset; - local->flag = len; - frame->local = local; - - STACK_WIND (frame, - quiesce_rchecksum_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->rchecksum, - fd, offset, len, xdata); - return 0; - } + priv = this->private; - stub = fop_rchecksum_stub (frame, default_rchecksum_resume, - fd, offset, len, xdata); - if (!stub) { - STACK_UNWIND_STRICT (rchecksum, frame, -1, ENOMEM, 0, NULL, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + local->fd = fd_ref(fd); + local->offset = offset; + local->flag = len; + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_rchecksum_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->rchecksum, fd, offset, len, xdata); + return 0; + } + stub = fop_rchecksum_stub(frame, default_rchecksum_resume, fd, offset, len, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(rchecksum, frame, -1, ENOMEM, 0, NULL, NULL); return 0; -} + } + gf_quiesce_enqueue(this, stub); + + return 0; +} int32_t -quiesce_readdir (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, - off_t off, dict_t *xdata) +quiesce_readdir(call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, + off_t off, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - priv = this->private; - - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - local->fd = fd_ref (fd); - local->size = size; - local->offset = off; - frame->local = local; - - STACK_WIND (frame, - quiesce_readdir_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->readdir, - fd, size, off, xdata); - return 0; - } + priv = this->private; - stub = fop_readdir_stub (frame, default_readdir_resume, fd, size, off, xdata); - if (!stub) { - STACK_UNWIND_STRICT (readdir, frame, -1, ENOMEM, NULL, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + local->fd = fd_ref(fd); + local->size = size; + local->offset = off; + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_readdir_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->readdir, fd, size, off, xdata); + return 0; + } + stub = fop_readdir_stub(frame, default_readdir_resume, fd, size, off, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(readdir, frame, -1, ENOMEM, NULL, NULL); return 0; -} + } + + gf_quiesce_enqueue(this, stub); + return 0; +} int32_t -quiesce_readdirp (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, - off_t off, dict_t *dict) +quiesce_readdirp(call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, + off_t off, dict_t *dict) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - priv = this->private; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - local->fd = fd_ref (fd); - local->size = size; - local->offset = off; - local->dict = dict_ref (dict); - frame->local = local; - - STACK_WIND (frame, - quiesce_readdirp_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->readdirp, - fd, size, off, dict); - return 0; - } + priv = this->private; - stub = fop_readdirp_stub (frame, default_readdirp_resume, fd, size, - off, dict); - if (!stub) { - STACK_UNWIND_STRICT (readdirp, frame, -1, ENOMEM, NULL, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + local->fd = fd_ref(fd); + local->size = size; + local->offset = off; + local->dict = dict_ref(dict); + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_readdirp_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->readdirp, fd, size, off, dict); + return 0; + } + stub = fop_readdirp_stub(frame, default_readdirp_resume, fd, size, off, + dict); + if (!stub) { + STACK_UNWIND_STRICT(readdirp, frame, -1, ENOMEM, NULL, NULL); return 0; + } + + gf_quiesce_enqueue(this, stub); + + return 0; } int32_t -quiesce_setattr (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - struct iatt *stbuf, - int32_t valid, dict_t *xdata) +quiesce_setattr(call_frame_t *frame, xlator_t *this, loc_t *loc, + struct iatt *stbuf, int32_t valid, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv && priv->pass_through) { - STACK_WIND (frame, - default_setattr_cbk, - FIRST_CHILD (this), - FIRST_CHILD (this)->fops->setattr, - loc, stbuf, valid, xdata); - return 0; - } + if (priv && priv->pass_through) { + STACK_WIND(frame, default_setattr_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->setattr, loc, stbuf, valid, xdata); + return 0; + } - stub = fop_setattr_stub (frame, default_setattr_resume, - loc, stbuf, valid, xdata); - if (!stub) { - STACK_UNWIND_STRICT (setattr, frame, -1, ENOMEM, NULL, NULL, NULL); - return 0; - } + stub = fop_setattr_stub(frame, default_setattr_resume, loc, stbuf, valid, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(setattr, frame, -1, ENOMEM, NULL, NULL, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } - int32_t -quiesce_stat (call_frame_t *frame, - xlator_t *this, - loc_t *loc, dict_t *xdata) +quiesce_stat(call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - priv = this->private; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - loc_dup (loc, &local->loc); - frame->local = local; - - STACK_WIND (frame, - quiesce_stat_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->stat, - loc, xdata); - return 0; - } + priv = this->private; - stub = fop_stat_stub (frame, default_stat_resume, loc, xdata); - if (!stub) { - STACK_UNWIND_STRICT (stat, frame, -1, ENOMEM, NULL, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + loc_dup(loc, &local->loc); + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_stat_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->stat, loc, xdata); + return 0; + } + stub = fop_stat_stub(frame, default_stat_resume, loc, xdata); + if (!stub) { + STACK_UNWIND_STRICT(stat, frame, -1, ENOMEM, NULL, NULL); return 0; + } + + gf_quiesce_enqueue(this, stub); + + return 0; } int32_t -quiesce_lookup (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - dict_t *xattr_req) +quiesce_lookup(call_frame_t *frame, xlator_t *this, loc_t *loc, + dict_t *xattr_req) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - priv = this->private; - - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - loc_dup (loc, &local->loc); - local->dict = dict_ref (xattr_req); - frame->local = local; - - STACK_WIND (frame, - quiesce_lookup_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->lookup, - loc, xattr_req); - return 0; - } + priv = this->private; - stub = fop_lookup_stub (frame, default_lookup_resume, loc, xattr_req); - if (!stub) { - STACK_UNWIND_STRICT (lookup, frame, -1, ENOMEM, - NULL, NULL, NULL, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + loc_dup(loc, &local->loc); + local->dict = dict_ref(xattr_req); + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_lookup_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->lookup, loc, xattr_req); + return 0; + } + stub = fop_lookup_stub(frame, default_lookup_resume, loc, xattr_req); + if (!stub) { + STACK_UNWIND_STRICT(lookup, frame, -1, ENOMEM, NULL, NULL, NULL, NULL); return 0; + } + + gf_quiesce_enqueue(this, stub); + + return 0; } int32_t -quiesce_fsetattr (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - struct iatt *stbuf, - int32_t valid, dict_t *xdata) +quiesce_fsetattr(call_frame_t *frame, xlator_t *this, fd_t *fd, + struct iatt *stbuf, int32_t valid, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; - priv = this->private; + priv = this->private; - if (priv && priv->pass_through) { - STACK_WIND (frame, - default_fsetattr_cbk, - FIRST_CHILD (this), - FIRST_CHILD (this)->fops->fsetattr, - fd, stbuf, valid, xdata); - return 0; - } + if (priv && priv->pass_through) { + STACK_WIND(frame, default_fsetattr_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->fsetattr, fd, stbuf, valid, xdata); + return 0; + } - stub = fop_fsetattr_stub (frame, default_fsetattr_resume, - fd, stbuf, valid, xdata); - if (!stub) { - STACK_UNWIND_STRICT (fsetattr, frame, -1, ENOMEM, NULL, NULL, NULL); - return 0; - } + stub = fop_fsetattr_stub(frame, default_fsetattr_resume, fd, stbuf, valid, + xdata); + if (!stub) { + STACK_UNWIND_STRICT(fsetattr, frame, -1, ENOMEM, NULL, NULL, NULL); + return 0; + } - gf_quiesce_enqueue (this, stub); + gf_quiesce_enqueue(this, stub); - return 0; + return 0; } int32_t -quiesce_fallocate (call_frame_t *frame, - xlator_t *this, - fd_t *fd, int32_t mode, - off_t offset, size_t len, dict_t *xdata) +quiesce_fallocate(call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t mode, + off_t offset, size_t len, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - priv = this->private; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - local->fd = fd_ref (fd); - local->offset = offset; - local->len = len; - local->flag = mode; - - frame->local = local; - - STACK_WIND (frame, - default_fallocate_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->fallocate, - fd, mode, offset, len, xdata); - return 0; - } + priv = this->private; - stub = fop_fallocate_stub (frame, default_fallocate_resume, fd, - mode, offset, len, xdata); - if (!stub) { - STACK_UNWIND_STRICT (fallocate, frame, -1, ENOMEM, - NULL, NULL, NULL); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + local->fd = fd_ref(fd); + local->offset = offset; + local->len = len; + local->flag = mode; - gf_quiesce_enqueue (this, stub); + frame->local = local; + STACK_WIND(frame, default_fallocate_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->fallocate, fd, mode, offset, len, + xdata); return 0; -} + } + stub = fop_fallocate_stub(frame, default_fallocate_resume, fd, mode, offset, + len, xdata); + if (!stub) { + STACK_UNWIND_STRICT(fallocate, frame, -1, ENOMEM, NULL, NULL, NULL); + return 0; + } -int -quiesce_seek_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, off_t offset, - dict_t *xdata) -{ - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; + gf_quiesce_enqueue(this, stub); - local = frame->local; - frame->local = NULL; - if ((op_ret == -1) && (op_errno == ENOTCONN)) { - /* Re-transmit (by putting in the queue) */ - stub = fop_seek_stub (frame, default_seek_resume, - local->fd, local->offset, - local->what, xdata); - if (!stub) { - STACK_UNWIND_STRICT (seek, frame, -1, ENOMEM, 0, NULL); - goto out; - } + return 0; +} - gf_quiesce_enqueue (this, stub); - goto out; +int +quiesce_seek_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, off_t offset, dict_t *xdata) +{ + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; + + local = frame->local; + frame->local = NULL; + if ((op_ret == -1) && (op_errno == ENOTCONN)) { + /* Re-transmit (by putting in the queue) */ + stub = fop_seek_stub(frame, default_seek_resume, local->fd, + local->offset, local->what, xdata); + if (!stub) { + STACK_UNWIND_STRICT(seek, frame, -1, ENOMEM, 0, NULL); + goto out; } - STACK_UNWIND_STRICT (seek, frame, op_ret, op_errno, offset, xdata); + gf_quiesce_enqueue(this, stub); + goto out; + } + + STACK_UNWIND_STRICT(seek, frame, op_ret, op_errno, offset, xdata); out: - gf_quiesce_local_wipe (this, local); + gf_quiesce_local_wipe(this, local); - return 0; + return 0; } int -quiesce_seek (call_frame_t *frame, xlator_t *this, fd_t *fd, - off_t offset, gf_seek_what_t what, dict_t *xdata) +quiesce_seek(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, + gf_seek_what_t what, dict_t *xdata) { - quiesce_priv_t *priv = NULL; - call_stub_t *stub = NULL; - quiesce_local_t *local = NULL; - - priv = this->private; - - if (priv && priv->pass_through) { - local = mem_get0 (priv->local_pool); - local->fd = fd_ref (fd); - local->offset = offset; - local->what = what; + quiesce_priv_t *priv = NULL; + call_stub_t *stub = NULL; + quiesce_local_t *local = NULL; - frame->local = local; + priv = this->private; - STACK_WIND (frame, - quiesce_seek_cbk, - FIRST_CHILD(this), - FIRST_CHILD(this)->fops->seek, - fd, offset, what, xdata); - return 0; - } + if (priv && priv->pass_through) { + local = mem_get0(priv->local_pool); + local->fd = fd_ref(fd); + local->offset = offset; + local->what = what; - stub = fop_seek_stub (frame, default_seek_resume, fd, - offset, what, xdata); - if (!stub) { - STACK_UNWIND_STRICT (seek, frame, -1, ENOMEM, 0, NULL); - return 0; - } + frame->local = local; - gf_quiesce_enqueue (this, stub); + STACK_WIND(frame, quiesce_seek_cbk, FIRST_CHILD(this), + FIRST_CHILD(this)->fops->seek, fd, offset, what, xdata); + return 0; + } + stub = fop_seek_stub(frame, default_seek_resume, fd, offset, what, xdata); + if (!stub) { + STACK_UNWIND_STRICT(seek, frame, -1, ENOMEM, 0, NULL); return 0; -} + } + gf_quiesce_enqueue(this, stub); + return 0; +} int32_t -mem_acct_init (xlator_t *this) +mem_acct_init(xlator_t *this) { - int ret = -1; + int ret = -1; - ret = xlator_mem_acct_init (this, gf_quiesce_mt_end + 1); + ret = xlator_mem_acct_init(this, gf_quiesce_mt_end + 1); - return ret; + return ret; } int -reconfigure (xlator_t *this, dict_t *options) +reconfigure(xlator_t *this, dict_t *options) { - int32_t ret = -1; - quiesce_priv_t *priv = NULL; + int32_t ret = -1; + quiesce_priv_t *priv = NULL; - priv = this->private; + priv = this->private; - GF_OPTION_RECONF("timeout", priv->timeout, options, time, out); - GF_OPTION_RECONF ("failover-hosts", priv->failover_hosts, options, - str, out); - gf_quiesce_populate_failover_hosts (this, priv, priv->failover_hosts); + GF_OPTION_RECONF("timeout", priv->timeout, options, time, out); + GF_OPTION_RECONF("failover-hosts", priv->failover_hosts, options, str, out); + gf_quiesce_populate_failover_hosts(this, priv, priv->failover_hosts); - ret = 0; + ret = 0; out: - return ret; + return ret; } int -init (xlator_t *this) +init(xlator_t *this) { - int ret = -1; - quiesce_priv_t *priv = NULL; + int ret = -1; + quiesce_priv_t *priv = NULL; - if (!this->children || this->children->next) { - gf_log (this->name, GF_LOG_ERROR, - "'quiesce' not configured with exactly one child"); - goto out; - } + if (!this->children || this->children->next) { + gf_log(this->name, GF_LOG_ERROR, + "'quiesce' not configured with exactly one child"); + goto out; + } - if (!this->parents) { - gf_log (this->name, GF_LOG_WARNING, - "dangling volume. check volfile "); - } + if (!this->parents) { + gf_log(this->name, GF_LOG_WARNING, "dangling volume. check volfile "); + } - priv = GF_CALLOC (1, sizeof (*priv), gf_quiesce_mt_priv_t); - if (!priv) - goto out; + priv = GF_CALLOC(1, sizeof(*priv), gf_quiesce_mt_priv_t); + if (!priv) + goto out; - INIT_LIST_HEAD (&priv->failover_list); + INIT_LIST_HEAD(&priv->failover_list); - GF_OPTION_INIT ("timeout", priv->timeout, time, out); - GF_OPTION_INIT ("failover-hosts", priv->failover_hosts, str, out); - gf_quiesce_populate_failover_hosts (this, priv, priv->failover_hosts); + GF_OPTION_INIT("timeout", priv->timeout, time, out); + GF_OPTION_INIT("failover-hosts", priv->failover_hosts, str, out); + gf_quiesce_populate_failover_hosts(this, priv, priv->failover_hosts); - priv->local_pool = mem_pool_new (quiesce_local_t, - GF_FOPS_EXPECTED_IN_PARALLEL); + priv->local_pool = mem_pool_new(quiesce_local_t, + GF_FOPS_EXPECTED_IN_PARALLEL); - LOCK_INIT (&priv->lock); - priv->pass_through = _gf_false; + LOCK_INIT(&priv->lock); + priv->pass_through = _gf_false; - INIT_LIST_HEAD (&priv->req); + INIT_LIST_HEAD(&priv->req); - this->private = priv; - ret = 0; + this->private = priv; + ret = 0; out: - return ret; + return ret; } void -fini (xlator_t *this) +fini(xlator_t *this) { - quiesce_priv_t *priv = NULL; + quiesce_priv_t *priv = NULL; - priv = this->private; - if (!priv) - goto out; - this->private = NULL; + priv = this->private; + if (!priv) + goto out; + this->private = NULL; - mem_pool_destroy (priv->local_pool); - LOCK_DESTROY (&priv->lock); - GF_FREE (priv); + mem_pool_destroy(priv->local_pool); + LOCK_DESTROY(&priv->lock); + GF_FREE(priv); out: - return; + return; } int -notify (xlator_t *this, int event, void *data, ...) -{ - int ret = 0; - quiesce_priv_t *priv = NULL; - - priv = this->private; - if (!priv) - goto out; - - switch (event) { - case GF_EVENT_CHILD_UP: - { - ret = gf_thread_create (&priv->thr, NULL, - gf_quiesce_dequeue_start, - this, "quiesce"); - if (ret) { - gf_log (this->name, GF_LOG_ERROR, - "failed to create the quiesce-dequeue thread"); - } - - LOCK (&priv->lock); - { - priv->pass_through = _gf_true; - } - UNLOCK (&priv->lock); - break; +notify(xlator_t *this, int event, void *data, ...) +{ + int ret = 0; + quiesce_priv_t *priv = NULL; + + priv = this->private; + if (!priv) + goto out; + + switch (event) { + case GF_EVENT_CHILD_UP: { + ret = gf_thread_create(&priv->thr, NULL, gf_quiesce_dequeue_start, + this, "quiesce"); + if (ret) { + gf_log(this->name, GF_LOG_ERROR, + "failed to create the quiesce-dequeue thread"); + } + + LOCK(&priv->lock); + { + priv->pass_through = _gf_true; + } + UNLOCK(&priv->lock); + break; } case GF_EVENT_CHILD_DOWN: - LOCK (&priv->lock); - { - priv->pass_through = _gf_false; - __gf_quiesce_start_timer (this, priv); - - } - UNLOCK (&priv->lock); - break; + LOCK(&priv->lock); + { + priv->pass_through = _gf_false; + __gf_quiesce_start_timer(this, priv); + } + UNLOCK(&priv->lock); + break; default: - break; - } + break; + } - ret = default_notify (this, event, data); + ret = default_notify(this, event, data); out: - return ret; + return ret; } - struct xlator_fops fops = { - /* write/modifying fops */ - .mknod = quiesce_mknod, - .create = quiesce_create, - .truncate = quiesce_truncate, - .ftruncate = quiesce_ftruncate, - .setxattr = quiesce_setxattr, - .removexattr = quiesce_removexattr, - .symlink = quiesce_symlink, - .unlink = quiesce_unlink, - .link = quiesce_link, - .mkdir = quiesce_mkdir, - .rmdir = quiesce_rmdir, - .rename = quiesce_rename, - .fallocate = quiesce_fallocate, - - /* The below calls are known to change state, hence - re-transmittion is not advised */ - .lk = quiesce_lk, - .inodelk = quiesce_inodelk, - .finodelk = quiesce_finodelk, - .entrylk = quiesce_entrylk, - .fentrylk = quiesce_fentrylk, - .xattrop = quiesce_xattrop, - .fxattrop = quiesce_fxattrop, - .setattr = quiesce_setattr, - .fsetattr = quiesce_fsetattr, - - /* Special case, re-transmittion is not harmful * - * as offset is properly sent from above layers */ - /* TODO: not re-transmitted as of now */ - .writev = quiesce_writev, - - /* re-transmittable fops */ - .lookup = quiesce_lookup, - .stat = quiesce_stat, - .fstat = quiesce_fstat, - .access = quiesce_access, - .readlink = quiesce_readlink, - .getxattr = quiesce_getxattr, - .open = quiesce_open, - .readv = quiesce_readv, - .flush = quiesce_flush, - .fsync = quiesce_fsync, - .statfs = quiesce_statfs, - .opendir = quiesce_opendir, - .readdir = quiesce_readdir, - .readdirp = quiesce_readdirp, - .fsyncdir = quiesce_fsyncdir, - .seek = quiesce_seek, + /* write/modifying fops */ + .mknod = quiesce_mknod, + .create = quiesce_create, + .truncate = quiesce_truncate, + .ftruncate = quiesce_ftruncate, + .setxattr = quiesce_setxattr, + .removexattr = quiesce_removexattr, + .symlink = quiesce_symlink, + .unlink = quiesce_unlink, + .link = quiesce_link, + .mkdir = quiesce_mkdir, + .rmdir = quiesce_rmdir, + .rename = quiesce_rename, + .fallocate = quiesce_fallocate, + + /* The below calls are known to change state, hence + re-transmittion is not advised */ + .lk = quiesce_lk, + .inodelk = quiesce_inodelk, + .finodelk = quiesce_finodelk, + .entrylk = quiesce_entrylk, + .fentrylk = quiesce_fentrylk, + .xattrop = quiesce_xattrop, + .fxattrop = quiesce_fxattrop, + .setattr = quiesce_setattr, + .fsetattr = quiesce_fsetattr, + + /* Special case, re-transmittion is not harmful * + * as offset is properly sent from above layers */ + /* TODO: not re-transmitted as of now */ + .writev = quiesce_writev, + + /* re-transmittable fops */ + .lookup = quiesce_lookup, + .stat = quiesce_stat, + .fstat = quiesce_fstat, + .access = quiesce_access, + .readlink = quiesce_readlink, + .getxattr = quiesce_getxattr, + .open = quiesce_open, + .readv = quiesce_readv, + .flush = quiesce_flush, + .fsync = quiesce_fsync, + .statfs = quiesce_statfs, + .opendir = quiesce_opendir, + .readdir = quiesce_readdir, + .readdirp = quiesce_readdirp, + .fsyncdir = quiesce_fsyncdir, + .seek = quiesce_seek, }; struct xlator_dumpops dumpops; - struct xlator_cbks cbks; - struct volume_options options[] = { - { .key = {"timeout"}, - .type = GF_OPTION_TYPE_TIME, - .default_value = "45", - .description = "After 'timeout' seconds since the time 'quiesce' " - "option was set to \"!pass-through\", acknowledgements to file " - "operations are no longer quiesced and previously " - "quiesced acknowledgements are sent to the application", - .op_version = { GD_OP_VERSION_4_0_0 }, - .flags = OPT_FLAG_CLIENT_OPT | OPT_FLAG_SETTABLE | OPT_FLAG_DOC, - }, - { .key = {"failover-hosts"}, - .type = GF_OPTION_TYPE_INTERNET_ADDRESS_LIST, - .op_version = { GD_OP_VERSION_4_0_0 }, - .flags = OPT_FLAG_CLIENT_OPT | OPT_FLAG_SETTABLE | OPT_FLAG_DOC, - .description = "It is a comma separated list of hostname/IP " - "addresses. It Specifies the list of hosts where " - "the gfproxy daemons are running, to which the " - "the thin clients can failover to." - }, - { .key = {NULL} }, + { + .key = {"timeout"}, + .type = GF_OPTION_TYPE_TIME, + .default_value = "45", + .description = + "After 'timeout' seconds since the time 'quiesce' " + "option was set to \"!pass-through\", acknowledgements to file " + "operations are no longer quiesced and previously " + "quiesced acknowledgements are sent to the application", + .op_version = {GD_OP_VERSION_4_0_0}, + .flags = OPT_FLAG_CLIENT_OPT | OPT_FLAG_SETTABLE | OPT_FLAG_DOC, + }, + {.key = {"failover-hosts"}, + .type = GF_OPTION_TYPE_INTERNET_ADDRESS_LIST, + .op_version = {GD_OP_VERSION_4_0_0}, + .flags = OPT_FLAG_CLIENT_OPT | OPT_FLAG_SETTABLE | OPT_FLAG_DOC, + .description = "It is a comma separated list of hostname/IP " + "addresses. It Specifies the list of hosts where " + "the gfproxy daemons are running, to which the " + "the thin clients can failover to."}, + {.key = {NULL}}, }; -- cgit