From a5fb0e29a9c56e0fb5c391cea90553281fe9de7c Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Wed, 10 Jul 2013 11:43:46 -0700 Subject: [PATCH] vlog: Use async I/O. Signed-off-by: Ben Pfaff --- lib/vlog.c | 12 +++++++++++- vswitchd/bridge.c | 3 +++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/vlog.c b/lib/vlog.c index ded434fee..d134c29a9 100644 --- a/lib/vlog.c +++ b/lib/vlog.c @@ -28,6 +28,7 @@ #include #include #include +#include "async-append.h" #include "coverage.h" #include "dirs.h" #include "dynamic-string.h" @@ -95,6 +96,7 @@ static struct facility facilities[VLF_N_FACILITIES] = { /* VLF_FILE configuration. */ static char *log_file_name; static int log_fd = -1; +static struct async_append *log_writer; /* vlog initialized? */ static bool vlog_inited; @@ -281,6 +283,10 @@ vlog_set_log_file(const char *file_name) /* Close old log file. */ if (log_fd >= 0) { VLOG_INFO("closing log file"); + + async_append_destroy(log_writer); + log_writer = NULL; + close(log_fd); log_fd = -1; } @@ -307,6 +313,7 @@ vlog_set_log_file(const char *file_name) log_file_name, ovs_strerror(errno)); error = errno; } else { + log_writer = async_append_create(log_fd); VLOG_INFO("opened log file %s", log_file_name); error = 0; } @@ -786,7 +793,10 @@ 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'); - ignore(write(log_fd, s.string, s.length)); + async_append_write(log_writer, s.string, s.length); + if (level == VLL_EMER) { + async_append_flush(log_writer); + } } ds_destroy(&s); diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c index 686eb9300..a73379ca5 100644 --- a/vswitchd/bridge.c +++ b/vswitchd/bridge.c @@ -18,6 +18,7 @@ #include #include #include +#include "async-append.h" #include "bfd.h" #include "bitmap.h" #include "bond.h" @@ -2444,6 +2445,8 @@ bridge_run(void) * process that forked us to exit successfully. */ daemonize_complete(); + async_append_enable(); + VLOG_INFO_ONCE("%s (Open vSwitch) %s", program_name, VERSION); } } -- 2.47.0