Skip to content

Commit

Permalink
vlog: Remove support for worker process.
Browse files Browse the repository at this point in the history
The worker process implementation isn't thread-safe and, once OVS
itself is threaded, it doesn't make much sense to have a worker
process anyway.

Signed-off-by: Ben Pfaff <[email protected]>
Acked-by: Ed Maste <[email protected]>
  • Loading branch information
blp committed Jul 12, 2013
1 parent ebce455 commit 0a04ad8
Showing 1 changed file with 1 addition and 63 deletions.
64 changes: 1 addition & 63 deletions lib/vlog.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
#include "timeval.h"
#include "unixctl.h"
#include "util.h"
#include "worker.h"

VLOG_DEFINE_THIS_MODULE(vlog);

Expand Down Expand Up @@ -104,8 +103,6 @@ static void format_log_message(const struct vlog_module *, enum vlog_level,
enum vlog_facility, unsigned int msg_num,
const char *message, va_list, struct ds *)
PRINTF_FORMAT(5, 0);
static void vlog_write_file(struct ds *);
static void vlog_update_async_log_fd(void);

/* Searches the 'n_names' in 'names'. Returns the index of a match for
* 'target', or 'n_names' if no name matches. */
Expand Down Expand Up @@ -310,9 +307,6 @@ vlog_set_log_file(const char *file_name)
/* Open new log file and update min_levels[] to reflect whether we actually
* have a log_file. */
log_fd = open(log_file_name, O_WRONLY | O_CREAT | O_APPEND, 0666);
if (log_fd >= 0) {
vlog_update_async_log_fd();
}
for (mp = vlog_modules; mp < &vlog_modules[n_vlog_modules]; mp++) {
update_min_level(*mp);
}
Expand Down Expand Up @@ -809,7 +803,7 @@ vlog_valist(const struct vlog_module *module, enum vlog_level level,
format_log_message(module, level, VLF_FILE, msg_num,
message, args, &s);
ds_put_char(&s, '\n');
vlog_write_file(&s);
ignore(write(log_fd, s.string, s.length));
}

ds_destroy(&s);
Expand Down Expand Up @@ -958,59 +952,3 @@ vlog_usage(void)
" (default: %s/%s.log)\n",
ovs_logdir(), program_name);
}

static bool vlog_async_inited = false;

static worker_request_func vlog_async_write_request_cb;

static void
vlog_write_file(struct ds *s)
{
if (worker_is_running()) {
static bool in_worker_request = false;
if (!in_worker_request) {
in_worker_request = true;

worker_request(s->string, s->length,
&log_fd, vlog_async_inited ? 0 : 1,
vlog_async_write_request_cb, NULL, NULL);
vlog_async_inited = true;

in_worker_request = false;
return;
} else {
/* We've been entered recursively. This can happen if
* worker_request(), or a function that it calls, tries to log
* something. We can't call worker_request() recursively, so fall
* back to writing the log file directly. */
COVERAGE_INC(vlog_recursive);
}
}
ignore(write(log_fd, s->string, s->length));
}

static void
vlog_update_async_log_fd(void)
{
if (worker_is_running()) {
worker_request(NULL, 0, &log_fd, 1, vlog_async_write_request_cb,
NULL, NULL);
vlog_async_inited = true;
}
}

static void
vlog_async_write_request_cb(struct ofpbuf *request,
const int *fd, size_t n_fds)
{
if (n_fds > 0) {
if (log_fd >= 0) {
close(log_fd);
}
log_fd = *fd;
}

if (request->size > 0) {
ignore(write(log_fd, request->data, request->size));
}
}

0 comments on commit 0a04ad8

Please sign in to comment.