From 0465aa203d0c315d083f6d043bdec3f4b55d309e Mon Sep 17 00:00:00 2001 From: Frank Ueberschar Date: Tue, 29 May 2018 14:38:19 +0200 Subject: [PATCH 1/3] cleanup: removed CONIO_FIX --- core/src/console/console.cc | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/core/src/console/console.cc b/core/src/console/console.cc index 7c0188b00bc..cc08018de29 100644 --- a/core/src/console/console.cc +++ b/core/src/console/console.cc @@ -35,7 +35,6 @@ #ifdef HAVE_CONIO #include "conio.h" -//#define CONIO_FIX 1 #else #define ConInit(x) #define ConTerm() @@ -1636,38 +1635,10 @@ void senditf(const char *fmt,...) void sendit(const char *buf) { -#ifdef CONIO_FIX - char obuf[3000]; - if (output == stdout || teeout) { - const char *p, *q; - /* - * Here, we convert every \n into \r\n because the - * terminal is in raw mode when we are using - * conio. - */ - for (p=q=buf; (p=strchr(q, '\n')); ) { - int len = p - q; - if (len > 0) { - memcpy(obuf, q, len); - } - memcpy(obuf+len, "\r\n", 3); - q = ++p; /* point after \n */ - fputs(obuf, output); - } - if (*q) { - fputs(q, output); - } - fflush(output); - } - if (output != stdout) { - fputs(buf, output); - } -#else fputs(buf, output); fflush(output); if (teeout) { fputs(buf, stdout); fflush(stdout); } -#endif } From 890919851c4bebcc61e05d8626c3cb1effc51d86 Mon Sep 17 00:00:00 2001 From: Frank Ueberschar Date: Wed, 30 May 2018 14:50:48 +0200 Subject: [PATCH 2/3] cleanup: removed unused functions --- core/src/dird/dird.cc | 87 ------------------------------------------- 1 file changed, 87 deletions(-) diff --git a/core/src/dird/dird.cc b/core/src/dird/dird.cc index b4fd8876b6e..f85f5ee1be9 100644 --- a/core/src/dird/dird.cc +++ b/core/src/dird/dird.cc @@ -659,93 +659,6 @@ bool DoReloadConfig() return reloaded; } -static int me_psk_server_callback(const char *identity, - unsigned char *psk, - unsigned int max_psk_len) { - - Dmsg0(100, "me_psk_server_callback"); - Dmsg1(100, "Received identity '%s'\n", identity); - - int result = 0; - - if (NULL != me && NULL != me->password.value) { - if (p_encoding_clear == me->password.encoding) { - /* plain password */ - } else if (p_encoding_md5 == me->password.encoding) { - /* md5 string */ - /* convert the PSK key to binary */ - result = (int)hex2bin(me->password.value, psk, max_psk_len); - } else { - /* hex password excoding? */ - } - } else { - Dmsg0(100, "Passowrd not set in Director Config\n"); - } - if (result == 0 || result > (int)max_psk_len) { - Dmsg1(100, "Error, Could not convert PSK key '%s' to binary key\n", me->password.value); - return 0; - } - - return result; -} - -static int ConsPskServerCallback(const char *identity, unsigned char *psk, unsigned int max_psk_len) { - - Dmsg0(100, "ConsPskServerCallback"); - Dmsg1(100, "Received identity '%s'\n", identity); - - char *psk_key = (char *)"1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A"; - - /* convert the PSK key to binary */ - unsigned int ret = hex2bin(psk_key, psk, max_psk_len); - if (ret <= 0 || ret > max_psk_len) { - Dmsg1(100, "Could not convert PSK key '%s' to binary key\n", psk_key); - return 0; - } - - return ret; -} - -/* Authenticate file_deamon connection */ -static int client_psk_client_callback(char *identity, - unsigned int max_identity_len, - unsigned char *psk, - unsigned int max_psk_len) { - Dmsg0(100, "client_psk_server_callback"); - Dmsg1(100, "Received identity '%s'\n", identity); - - char *psk_key = (char *)"1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A"; - - /* convert the PSK key to binary */ - unsigned int ret = hex2bin(psk_key, psk, max_psk_len); - if (ret <= 0 || ret > max_psk_len) { - Dmsg1(100, "Could not convert PSK key '%s' to binary key\n", psk_key); - return 0; - } - - return ret; -} - -static int store_psk_client_callback(char *identity, - unsigned int max_identity_len, - unsigned char *psk, - unsigned int max_psk_len) { - - Dmsg0(100, "store_psk_server_callback"); - Dmsg1(100, "Received identity '%s'\n", identity); - - char *psk_key = (char *)"1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A"; - - /* convert the PSK key to binary */ - unsigned int ret = hex2bin(psk_key, psk, max_psk_len); - if (ret <= 0 || ret > max_psk_len) { - Dmsg1(100, "Could not convert PSK key '%s' to binary key\n", psk_key); - return 0; - } - - return ret; -} - /* * See if two storage definitions point to the same Storage Daemon. * From f89ceba0bbd1cdf3fb8f08488788f5ec338fe8db Mon Sep 17 00:00:00 2001 From: Frank Ueberschar Date: Wed, 30 May 2018 15:45:52 +0200 Subject: [PATCH 3/3] cleanup: removed dead code and wrong comments - wq->idle_workers = 0; /* no idle threads */ idle_workers only set to 0 and never changed --- core/src/dird/jobq.cc | 34 ++-------------- core/src/dird/jobq.h | 3 +- core/src/lib/workq.cc | 90 ++----------------------------------------- core/src/lib/workq.h | 2 - 4 files changed, 8 insertions(+), 121 deletions(-) diff --git a/core/src/dird/jobq.cc b/core/src/dird/jobq.cc index 14accc3057c..faf2deed62c 100644 --- a/core/src/dird/jobq.cc +++ b/core/src/dird/jobq.cc @@ -67,7 +67,7 @@ static void DecWriteStore(JobControlRecord *jcr); * Returns: 0 on success * errno on failure */ -int JobqInit(jobq_t *jq, int threads, void *(*engine)(void *arg)) +int JobqInit(jobq_t *jq, int max_workers, void *(*engine)(void *arg)) { int status; jobq_item_t *item = NULL; @@ -95,9 +95,8 @@ int JobqInit(jobq_t *jq, int threads, void *(*engine)(void *arg)) return status; } jq->quit = false; - jq->max_workers = threads; /* max threads to create */ + jq->max_workers = max_workers; /* max threads to create */ jq->num_workers = 0; /* no threads yet */ - jq->idle_workers = 0; /* no idle threads */ jq->engine = engine; /* routine to run */ jq->valid = JOBQ_VALID; @@ -132,14 +131,6 @@ int JobqDestroy(jobq_t *jq) */ if (jq->num_workers > 0) { jq->quit = true; - if (jq->idle_workers) { - if ((status = pthread_cond_broadcast(&jq->work)) != 0) { - BErrNo be; - Jmsg1(NULL, M_ERROR, 0, _("pthread_cond_broadcast: ERR=%s\n"), be.bstrerror(status)); - V(jq->mutex); - return status; - } - } while (jq->num_workers > 0) { if ((status = pthread_cond_wait(&jq->work, &jq->mutex)) != 0) { BErrNo be; @@ -367,32 +358,15 @@ static int StartServer(jobq_t *jq) int status = 0; pthread_t id; - /* - * If any threads are idle, wake one. - * - * Actually we do a broadcast because on /lib/tls - * these signals seem to get lost from time to time. - */ - if (jq->idle_workers > 0) { - Dmsg0(2300, "Signal worker to wake up\n"); - if ((status = pthread_cond_broadcast(&jq->work)) != 0) { - BErrNo be; - Jmsg1(NULL, M_ERROR, 0, _("pthread_cond_signal: ERR=%s\n"), be.bstrerror(status)); - return status; - } - } else if (jq->num_workers < jq->max_workers) { + if (jq->num_workers < jq->max_workers) { Dmsg0(2300, "Create worker thread\n"); - /* - * No idle threads so create a new one - */ SetThreadConcurrency(jq->max_workers + 1); - jq->num_workers++; if ((status = pthread_create(&id, &jq->attr, jobq_server, (void *)jq)) != 0) { BErrNo be; - jq->num_workers--; Jmsg1(NULL, M_ERROR, 0, _("pthread_create: ERR=%s\n"), be.bstrerror(status)); return status; } + jq->num_workers++; } return status; } diff --git a/core/src/dird/jobq.h b/core/src/dird/jobq.h index 71e45fa1684..0cce7475ec7 100644 --- a/core/src/dird/jobq.h +++ b/core/src/dird/jobq.h @@ -55,7 +55,6 @@ struct jobq_t { bool quit; /* jobq should quit */ int max_workers; /* max threads */ int num_workers; /* current threads */ - int idle_workers; /* idle threads */ void *(*engine)(void *arg); /* user engine */ }; @@ -63,7 +62,7 @@ struct jobq_t { extern int JobqInit( jobq_t *wq, - int threads, /* maximum threads */ + int max_workers, /* maximum threads */ void *(*engine)(void *) /* engine routine */ ); extern int JobqDestroy(jobq_t *wq); diff --git a/core/src/lib/workq.cc b/core/src/lib/workq.cc index 78680a2db95..10f3280b04f 100644 --- a/core/src/lib/workq.cc +++ b/core/src/lib/workq.cc @@ -58,7 +58,7 @@ extern "C" void *workq_server(void *arg); * Returns: 0 on success * errno on failure */ -int WorkqInit(workq_t *wq, int threads, void *(*engine)(void *arg)) +int WorkqInit(workq_t *wq, int max_workers, void *(*engine)(void *arg)) { int status; @@ -80,9 +80,8 @@ int WorkqInit(workq_t *wq, int threads, void *(*engine)(void *arg)) } wq->quit = 0; wq->first = wq->last = NULL; - wq->max_workers = threads; /* max threads to create */ + wq->max_workers = max_workers; /* max threads to create */ wq->num_workers = 0; /* no threads yet */ - wq->idle_workers = 0; /* no idle threads */ wq->engine = engine; /* routine to run */ wq->valid = WORKQ_VALID; return 0; @@ -104,17 +103,8 @@ int WorkqDestroy(workq_t *wq) P(wq->mutex); wq->valid = 0; /* prevent any more operations */ - /* - * If any threads are active, wake them - */ if (wq->num_workers > 0) { wq->quit = 1; - if (wq->idle_workers) { - if ((status = pthread_cond_broadcast(&wq->work)) != 0) { - V(wq->mutex); - return status; - } - } while (wq->num_workers > 0) { Dmsg1(1400, "active workers: %d. Waiting for them to finish.\n", wq->num_workers); if ((status = pthread_cond_wait(&wq->work, &wq->mutex)) != 0) { @@ -178,16 +168,8 @@ int WorkqAdd(workq_t *wq, void *element, workq_ele_t **work_item, int priority) wq->last = item; } - /* if any threads are idle, wake one */ - if (wq->idle_workers > 0) { - Dmsg0(1400, "Signal worker\n"); - if ((status = pthread_cond_broadcast(&wq->work)) != 0) { - V(wq->mutex); - return status; - } - } else if (wq->num_workers < wq->max_workers) { + if (wq->num_workers < wq->max_workers) { Dmsg0(1400, "Create worker thread\n"); - /* No idle threads so create a new one */ SetThreadConcurrency(wq->max_workers + 1); if ((status = pthread_create(&id, &wq->attr, workq_server, (void *)wq)) != 0) { V(wq->mutex); @@ -204,72 +186,6 @@ int WorkqAdd(workq_t *wq, void *element, workq_ele_t **work_item, int priority) return status; } -/* - * Remove work from a queue - * wq is a queue that was created with workq_init - * work_item is an element of work - * - * Note, it is "removed" by immediately calling a processing routine. - * if you want to cancel it, you need to provide some external means - * of doing so. - */ -int WorkqRemove(workq_t *wq, workq_ele_t *work_item) -{ - int status, found = 0; - pthread_t id; - workq_ele_t *item, *prev; - - Dmsg0(1400, "WorkqRemove\n"); - if (wq->valid != WORKQ_VALID) { - return EINVAL; - } - - P(wq->mutex); - - for (prev=item=wq->first; item; item=item->next) { - if (item == work_item) { - found = 1; - break; - } - prev = item; - } - if (!found) { - return EINVAL; - } - - /* Move item to be first on list */ - if (wq->first != work_item) { - prev->next = work_item->next; - if (wq->last == work_item) { - wq->last = prev; - } - work_item->next = wq->first; - wq->first = work_item; - } - - /* if any threads are idle, wake one */ - if (wq->idle_workers > 0) { - Dmsg0(1400, "Signal worker\n"); - if ((status = pthread_cond_broadcast(&wq->work)) != 0) { - V(wq->mutex); - return status; - } - } else { - Dmsg0(1400, "Create worker thread\n"); - /* No idle threads so create a new one */ - SetThreadConcurrency(wq->max_workers + 1); - if ((status = pthread_create(&id, &wq->attr, workq_server, (void *)wq)) != 0) { - V(wq->mutex); - return status; - } - wq->num_workers++; - } - V(wq->mutex); - Dmsg0(1400, "Return WorkqRemove\n"); - return status; -} - - /* * This is the worker thread that serves the work queue. * In due course, it will call the user's engine. diff --git a/core/src/lib/workq.h b/core/src/lib/workq.h index ace2698f078..30db02b8694 100644 --- a/core/src/lib/workq.h +++ b/core/src/lib/workq.h @@ -54,7 +54,6 @@ typedef struct workq_tag { int quit; /* workq should quit */ int max_workers; /* max threads */ int num_workers; /* current threads */ - int idle_workers; /* idle threads */ void *(*engine)(void *arg); /* user engine */ } workq_t; @@ -67,6 +66,5 @@ extern int WorkqInit( ); extern int WorkqDestroy(workq_t *wq); extern int WorkqAdd(workq_t *wq, void *element, workq_ele_t **work_item, int priority); -extern int WorkqRemove(workq_t *wq, workq_ele_t *work_item); #endif /* BAREOS_LIB_WORKQ_H_ */