diff options
Diffstat (limited to 'xlators')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-store.c | 11 | ||||
-rw-r--r-- | xlators/protocol/server/src/server-helpers.c | 31 |
2 files changed, 24 insertions, 18 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-store.c b/xlators/mgmt/glusterd/src/glusterd-store.c index 7a0b7fc90..7ad63bde5 100644 --- a/xlators/mgmt/glusterd/src/glusterd-store.c +++ b/xlators/mgmt/glusterd/src/glusterd-store.c @@ -694,6 +694,11 @@ glusterd_volume_exclude_options_write (int fd, glusterd_volinfo_t *volinfo) if (ret) goto out; } + snprintf (buf, sizeof (buf), "%"PRIu64, volinfo->snap_max_limit); + ret = gf_store_save_value (fd, GLUSTERD_STORE_KEY_SNAP_MAX_LIMIT, + buf); + if (ret) + goto out; out: if (ret) @@ -1698,11 +1703,7 @@ glusterd_store_volinfo_atomic_update (glusterd_volinfo_t *volinfo) ret = gf_store_rename_tmppath (volinfo->shandle); if (ret) goto out; - snprintf (buf, sizeof (buf), "%"PRIu64, volinfo->snap_max_limit); - ret = gf_store_save_value (fd, GLUSTERD_STORE_KEY_SNAP_MAX_LIMIT, - buf); - if (ret) - goto out; + out: if (ret) gf_log (THIS->name, GF_LOG_ERROR, "Couldn't rename " diff --git a/xlators/protocol/server/src/server-helpers.c b/xlators/protocol/server/src/server-helpers.c index 03e3ec37f..ff23959ec 100644 --- a/xlators/protocol/server/src/server-helpers.c +++ b/xlators/protocol/server/src/server-helpers.c @@ -1004,14 +1004,12 @@ gf_barrier_dequeue (gf_barrier_t *barrier) if (!barrier || list_empty (&barrier->queue)) return NULL; - LOCK (&barrier->lock); - { - payload = list_entry (barrier->queue.next, - gf_barrier_payload_t, list); + payload = list_entry (barrier->queue.next, + gf_barrier_payload_t, list); + if (payload) { list_del_init (&payload->list); barrier->cur_size--; } - UNLOCK (&barrier->lock); return payload; } @@ -1029,17 +1027,20 @@ gf_barrier_dequeue_start (void *data) return; barrier = conf->barrier; - - while (!list_empty (&barrier->queue)) { - payload = gf_barrier_dequeue (barrier); - if (payload) { - if (gf_barrier_transmit (conf, payload)) { - gf_log ("server", GF_LOG_WARNING, - "Failed to transmit"); + LOCK (&barrier->lock); + { + while (barrier->cur_size) { + payload = gf_barrier_dequeue (barrier); + if (payload) { + if (gf_barrier_transmit (conf, payload)) { + gf_log ("server", GF_LOG_WARNING, + "Failed to transmit"); + } + GF_FREE (payload); } - GF_FREE (payload); } } + UNLOCK (&barrier->lock); return; } @@ -1055,6 +1056,7 @@ gf_barrier_timeout (void *data) goto out; barrier = conf->barrier; + gf_log ("", GF_LOG_INFO, "barrier timed-out"); LOCK (&barrier->lock); { need_dequeue = barrier->on; @@ -1085,6 +1087,7 @@ gf_barrier_start (xlator_t *this) barrier = conf->barrier; + gf_log (this->name, GF_LOG_INFO, "barrier start called"); LOCK (&barrier->lock); { /* if barrier is on, reset timer */ @@ -1134,6 +1137,7 @@ gf_barrier_stop (xlator_t *this) barrier = conf->barrier; + gf_log (this->name, GF_LOG_INFO, "barrier stop called"); LOCK (&barrier->lock); { need_dequeue = barrier->on; @@ -1205,6 +1209,7 @@ done: { barrier->fops = fops; } + UNLOCK (&barrier->lock); ret = 0; GF_FREE (dup_str); |