summaryrefslogtreecommitdiffstats
path: root/xlators/features/bit-rot/src/stub/bit-rot-stub.c
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/features/bit-rot/src/stub/bit-rot-stub.c')
-rw-r--r--xlators/features/bit-rot/src/stub/bit-rot-stub.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/xlators/features/bit-rot/src/stub/bit-rot-stub.c b/xlators/features/bit-rot/src/stub/bit-rot-stub.c
index 76a4c3f6962..830357070d6 100644
--- a/xlators/features/bit-rot/src/stub/bit-rot-stub.c
+++ b/xlators/features/bit-rot/src/stub/bit-rot-stub.c
@@ -229,18 +229,6 @@ notify (xlator_t *this, int event, void *data, ...)
if (!priv)
return 0;
- switch (event) {
- case GF_EVENT_CLEANUP:
- if (priv->signth) {
- (void) gf_thread_cleanup_xint (priv->signth);
- priv->signth = 0;
- }
- if (priv->container.thread) {
- (void) gf_thread_cleanup_xint (priv->container.thread);
- priv->container.thread = 0;
- }
- break;
- }
default_notify (this, event, data);
return 0;
}
@@ -263,6 +251,7 @@ fini (xlator_t *this)
"Could not cancel sign serializer thread");
goto out;
}
+ priv->signth = 0;
while (!list_empty (&priv->squeue)) {
sigstub = list_first_entry (&priv->squeue,
@@ -284,12 +273,19 @@ fini (xlator_t *this)
goto out;
}
+ priv->container.thread = 0;
+
while (!list_empty (&priv->container.bad_queue)) {
stub = list_first_entry (&priv->container.bad_queue, call_stub_t,
list);
list_del_init (&stub->list);
call_stub_destroy (stub);
- };
+ }
+
+ if (priv->local_pool) {
+ mem_pool_destroy (priv->local_pool);
+ priv->local_pool = NULL;
+ }
pthread_mutex_destroy (&priv->container.bad_lock);
pthread_cond_destroy (&priv->container.bad_cond);