diff options
author | Ryan Ding <ryan.ding@open-fs.com> | 2016-08-24 00:24:30 +0800 |
---|---|---|
committer | Jeff Darcy <jdarcy@redhat.com> | 2016-08-29 05:13:49 -0700 |
commit | 7f0042dce94edb58c92662d9e4f852ba006d12dc (patch) | |
tree | 547a6c1bf1a8a40fa17d04307e8019c192f73778 /xlators/features/upcall/src/upcall.c | |
parent | 8bb8e3d394d277b6e50ccd2ef6a3e907379371c8 (diff) |
features/upcall: segment fault while join thread reaper_thr in fini()
reaper_thr thread may not be started according to option
'cache-invalidation', if it's not started, join it in fini will cause a
segment fault.
Change-Id: I1c145a5feb137767880a08e79f810537283fb6b9
BUG: 1369524
Signed-off-by: Ryan Ding <ryan.ding@open-fs.com>
[ndevos: check .reaper_init_done and make it a boolean]
Reviewed-on: http://review.gluster.org/15298
Smoke: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: soumya k <skoduri@redhat.com>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'xlators/features/upcall/src/upcall.c')
-rw-r--r-- | xlators/features/upcall/src/upcall.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/xlators/features/upcall/src/upcall.c b/xlators/features/upcall/src/upcall.c index a007d694099..c49a3fd8796 100644 --- a/xlators/features/upcall/src/upcall.c +++ b/xlators/features/upcall/src/upcall.c @@ -2091,7 +2091,7 @@ reconfigure (xlator_t *this, dict_t *options) " Disabling cache_invalidation", strerror(errno)); } - priv->reaper_init_done = 1; + priv->reaper_init_done = _gf_true; } out: @@ -2123,7 +2123,7 @@ init (xlator_t *this) this->private = priv; priv->fini = 0; - priv->reaper_init_done = 0; + priv->reaper_init_done = _gf_false; this->local_pool = mem_pool_new (upcall_local_t, 512); ret = 0; @@ -2138,7 +2138,7 @@ init (xlator_t *this) " Disabling cache_invalidation", strerror(errno)); } - priv->reaper_init_done = 1; + priv->reaper_init_done = _gf_true; } out: if (ret) { @@ -2161,7 +2161,8 @@ fini (xlator_t *this) priv->fini = 1; - pthread_join (priv->reaper_thr, NULL); + if (priv->reaper_init_done) + pthread_join (priv->reaper_thr, NULL); LOCK_DESTROY (&priv->inode_ctx_lk); |