diff options
Diffstat (limited to 'xlators/features/upcall/src/upcall.c')
-rw-r--r-- | xlators/features/upcall/src/upcall.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/xlators/features/upcall/src/upcall.c b/xlators/features/upcall/src/upcall.c index b9b4bc9d725..7e1185a417f 100644 --- a/xlators/features/upcall/src/upcall.c +++ b/xlators/features/upcall/src/upcall.c @@ -2446,8 +2446,11 @@ fini (xlator_t *this) priv->fini = 1; - if (priv->reaper_init_done) - pthread_join (priv->reaper_thr, NULL); + if (priv->reaper_thr) { + gf_thread_cleanup_xint (priv->reaper_thr); + priv->reaper_thr = 0; + priv->reaper_init_done = _gf_false; + } dict_unref (priv->xattrs); LOCK_DESTROY (&priv->inode_ctx_lk); @@ -2457,13 +2460,24 @@ fini (xlator_t *this) * before calling xlator_fini */ GF_FREE (priv); + if (this->local_pool) { + mem_pool_destroy (this->local_pool); + this->local_pool = NULL; + } + return 0; } int upcall_forget (xlator_t *this, inode_t *inode) { + upcall_private_t *priv = this->private; + + if (!priv) + goto out; + upcall_cleanup_inode_ctx (this, inode); +out: return 0; } |