summaryrefslogtreecommitdiff
path: root/lib/pthreadpool
diff options
context:
space:
mode:
authorRalph Boehme <slow@samba.org>2018-12-28 09:02:54 +0100
committerStefan Metzmacher <metze@samba.org>2019-01-11 23:11:14 +0100
commit9e4bc1f4a9b0f9400e198680dfddfa8cd112ce2b (patch)
treeedd2d7edd4c365b798f27a9b0573bf26975709cc /lib/pthreadpool
parent991ca9b56460912ff1024f9ff443200195e507fa (diff)
downloadsamba-9e4bc1f4a9b0f9400e198680dfddfa8cd112ce2b.tar.gz
Revert "pthreadpool: maintain a global list of orphaned pthreadpool_tevent_jobs"
This reverts commit 25756425aaf5465e56ea809cd415b6a387848919. See the discussion in https://lists.samba.org/archive/samba-technical/2018-December/131731.html for the reasoning behind this revert. Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'lib/pthreadpool')
-rw-r--r--lib/pthreadpool/pthreadpool_tevent.c41
-rw-r--r--lib/pthreadpool/pthreadpool_tevent.h2
2 files changed, 0 insertions, 43 deletions
diff --git a/lib/pthreadpool/pthreadpool_tevent.c b/lib/pthreadpool/pthreadpool_tevent.c
index 3eca605d0c4..7fc49ce671e 100644
--- a/lib/pthreadpool/pthreadpool_tevent.c
+++ b/lib/pthreadpool/pthreadpool_tevent.c
@@ -82,24 +82,6 @@ static int pthreadpool_tevent_destructor(struct pthreadpool_tevent *pool);
static void pthreadpool_tevent_job_orphan(struct pthreadpool_tevent_job *job);
-static struct pthreadpool_tevent_job *orphaned_jobs;
-
-void pthreadpool_tevent_cleanup_orphaned_jobs(void)
-{
- struct pthreadpool_tevent_job *job = NULL;
- struct pthreadpool_tevent_job *njob = NULL;
-
- for (job = orphaned_jobs; job != NULL; job = njob) {
- njob = job->next;
-
- /*
- * The job destructor keeps the job alive
- * (and in the list) or removes it from the list.
- */
- TALLOC_FREE(job);
- }
-}
-
static int pthreadpool_tevent_job_signal(int jobid,
void (*job_fn)(void *private_data),
void *job_private_data,
@@ -111,8 +93,6 @@ int pthreadpool_tevent_init(TALLOC_CTX *mem_ctx, unsigned max_threads,
struct pthreadpool_tevent *pool;
int ret;
- pthreadpool_tevent_cleanup_orphaned_jobs();
-
pool = talloc_zero(mem_ctx, struct pthreadpool_tevent);
if (pool == NULL) {
return ENOMEM;
@@ -185,8 +165,6 @@ static int pthreadpool_tevent_destructor(struct pthreadpool_tevent *pool)
}
pool->pool = NULL;
- pthreadpool_tevent_cleanup_orphaned_jobs();
-
return 0;
}
@@ -340,18 +318,10 @@ static int pthreadpool_tevent_job_destructor(struct pthreadpool_tevent_job *job)
/*
* state->im still there means, we need to wait for the
* immediate event to be triggered or just leak the memory.
- *
- * Move it to the orphaned list, if it's not already there.
*/
return -1;
}
- /*
- * Finally remove from the orphaned_jobs list
- * and let talloc destroy us.
- */
- DLIST_REMOVE(orphaned_jobs, job);
-
return 0;
}
@@ -393,15 +363,6 @@ static void pthreadpool_tevent_job_orphan(struct pthreadpool_tevent_job *job)
*/
DLIST_REMOVE(job->pool->jobs, job);
- /*
- * Add it to the list of orphaned jobs,
- * which may be cleaned up later.
- *
- * The destructor removes it from the list
- * when possible or it denies the free
- * and keep it in the list.
- */
- DLIST_ADD_END(orphaned_jobs, job);
TALLOC_FREE(job);
}
@@ -440,8 +401,6 @@ struct tevent_req *pthreadpool_tevent_job_send(
struct pthreadpool_tevent_job *job = NULL;
int ret;
- pthreadpool_tevent_cleanup_orphaned_jobs();
-
req = tevent_req_create(mem_ctx, &state,
struct pthreadpool_tevent_job_state);
if (req == NULL) {
diff --git a/lib/pthreadpool/pthreadpool_tevent.h b/lib/pthreadpool/pthreadpool_tevent.h
index fdb86e23757..10d3a71c40a 100644
--- a/lib/pthreadpool/pthreadpool_tevent.h
+++ b/lib/pthreadpool/pthreadpool_tevent.h
@@ -22,8 +22,6 @@
#include <tevent.h>
-void pthreadpool_tevent_cleanup_orphaned_jobs(void);
-
struct pthreadpool_tevent;
int pthreadpool_tevent_init(TALLOC_CTX *mem_ctx, unsigned max_threads,