summaryrefslogtreecommitdiffstats
path: root/libglusterfs
diff options
context:
space:
mode:
authorKevin Vigor <kvigor@fb.com>2017-01-05 12:21:20 -0800
committerKevin Vigor <kvigor@fb.com>2017-01-05 12:21:20 -0800
commitc27aa58e72cf528583c585691e65abdb765535e5 (patch)
treefae75e5b924ac4fb80a3d4ed42203638732fbb52 /libglusterfs
parent63403742f53ec59a6acbe26ff4c39bab1b0842ed (diff)
parentcb8bc3396d16e777d9a2683886fefd43e747e8a3 (diff)
Merge remote-tracking branch 'origin/release-3.8' into merge-3.8-again
Change-Id: I844adf2aef161a44d446f8cd9b7ebcb224ee618a Signed-off-by: Kevin Vigor <kvigor@fb.com>
Diffstat (limited to 'libglusterfs')
-rw-r--r--libglusterfs/src/compat.h4
-rw-r--r--libglusterfs/src/ctx.c2
-rw-r--r--libglusterfs/src/mem-pool.c6
-rw-r--r--libglusterfs/src/stack.h8
-rw-r--r--libglusterfs/src/syncop-utils.c15
5 files changed, 25 insertions, 10 deletions
diff --git a/libglusterfs/src/compat.h b/libglusterfs/src/compat.h
index 54e7589b164..56736e52052 100644
--- a/libglusterfs/src/compat.h
+++ b/libglusterfs/src/compat.h
@@ -158,6 +158,10 @@ enum {
#define s6_addr32 __u6_addr.__u6_addr32
#endif
+#ifndef LOGIN_NAME_MAX
+#define LOGIN_NAME_MAX 256
+#endif
+
/* Posix dictates NAME_MAX to be used */
# ifndef NAME_MAX
# ifdef MAXNAMLEN
diff --git a/libglusterfs/src/ctx.c b/libglusterfs/src/ctx.c
index 2aa14654b9e..b009e6270a2 100644
--- a/libglusterfs/src/ctx.c
+++ b/libglusterfs/src/ctx.c
@@ -35,6 +35,8 @@ glusterfs_ctx_new ()
ctx->daemon_pipe[0] = -1;
ctx->daemon_pipe[1] = -1;
+ ctx->log.loglevel = DEFAULT_LOG_LEVEL;
+
/* lock is never destroyed! */
ret = LOCK_INIT (&ctx->lock);
if (ret) {
diff --git a/libglusterfs/src/mem-pool.c b/libglusterfs/src/mem-pool.c
index 40e80d5c33e..4d81ade8b60 100644
--- a/libglusterfs/src/mem-pool.c
+++ b/libglusterfs/src/mem-pool.c
@@ -422,7 +422,11 @@ mem_pool_new_fn (unsigned long sizeof_type,
if (!ctx)
goto out;
- list_add (&mem_pool->global_list, &ctx->mempool_list);
+ LOCK (&ctx->lock);
+ {
+ list_add (&mem_pool->global_list, &ctx->mempool_list);
+ }
+ UNLOCK (&ctx->lock);
out:
return mem_pool;
diff --git a/libglusterfs/src/stack.h b/libglusterfs/src/stack.h
index 2899be9bf2f..393fdac8e73 100644
--- a/libglusterfs/src/stack.h
+++ b/libglusterfs/src/stack.h
@@ -275,17 +275,19 @@ STACK_RESET (call_stack_t *stack)
#define STACK_WIND_TAIL(frame, obj, fn, params ...) \
do { \
xlator_t *old_THIS = NULL; \
+ xlator_t *next_xl = obj; \
+ typeof(fn) next_xl_fn = fn; \
\
- frame->this = obj; \
+ frame->this = next_xl; \
frame->wind_to = #fn; \
old_THIS = THIS; \
- THIS = obj; \
+ THIS = next_xl; \
gf_msg_trace ("stack-trace", 0, \
"stack-address: %p, " \
"winding from %s to %s", \
frame->root, old_THIS->name, \
THIS->name); \
- fn (frame, obj, params); \
+ next_xl_fn (frame, next_xl, params); \
THIS = old_THIS; \
} while (0)
diff --git a/libglusterfs/src/syncop-utils.c b/libglusterfs/src/syncop-utils.c
index 8f25db237f5..de6033fc501 100644
--- a/libglusterfs/src/syncop-utils.c
+++ b/libglusterfs/src/syncop-utils.c
@@ -266,9 +266,10 @@ _dir_scan_job_fn (void *data)
entry = NULL;
pthread_mutex_lock (scan_data->mut);
{
- if (ret || list_empty (&scan_data->q->list)) {
- (*scan_data->jobs_running)--;
+ if (ret)
*scan_data->retval |= ret;
+ if (list_empty (&scan_data->q->list)) {
+ (*scan_data->jobs_running)--;
pthread_cond_broadcast (scan_data->cond);
} else {
entry = list_first_entry (&scan_data->q->list,
@@ -406,10 +407,13 @@ syncop_mt_dir_scan (call_frame_t *frame, xlator_t *subvol, loc_t *loc, int pid,
ret = fn (subvol, entry, loc, data);
gf_dirent_entry_free (entry);
if (ret)
- break;
+ goto out;
continue;
}
+ if (retval) /*Any jobs failed?*/
+ goto out;
+
pthread_mutex_lock (&mut);
{
while (qlen == max_qlen)
@@ -423,8 +427,7 @@ syncop_mt_dir_scan (call_frame_t *frame, xlator_t *subvol, loc_t *loc, int pid,
}
}
pthread_mutex_unlock (&mut);
- if (retval) /*Any jobs failed?*/
- break;
+
if (!entry)
continue;
@@ -433,7 +436,7 @@ syncop_mt_dir_scan (call_frame_t *frame, xlator_t *subvol, loc_t *loc, int pid,
&retval, &mut, &cond,
&jobs_running, &qlen, fn, data);
if (ret)
- break;
+ goto out;
}
}