
On Mon, Mar 14, 2011 at 09:34:12PM -0600, Eric Blake wrote:
On 03/09/2011 02:08 AM, Daniel Veillard wrote:
Allow to dynamically set the size of the debug buffer
This is the part allowing to dynamically resize the debug log buffer from it's default 64kB size. The buffer is now dynamically allocated. It adds a new API virLogSetBufferSize() which resizes the buffer If passed a zero size, the buffer is deallocated and we do the small optimization of not formatting messages which are not output anymore. On the daemon side, it just adds a new option log_buffer_size to libvirtd.conf and call virLogSetBufferSize() if needed * src/util/logging.h src/util/logging.c src/libvirt_private.syms: make buffer dynamic and add virLogSetBufferSize() internal API * daemon/libvirtd.conf: document the new log_buffer_size option * daemon/libvirtd.c: read and use the new log_buffer_size option
diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c index 452566c..ad3274f 100644 --- a/daemon/libvirtd.c +++ b/daemon/libvirtd.c @@ -2713,18 +2713,22 @@ remoteReadSaslAllowedUsernameList (virConfPtr conf ATTRIBUTE_UNUSED, * Set up the logging environment * By default if daemonized all errors go to the logfile libvirtd.log, * but if verbose or error debugging is asked for then also output - * informations or debug. + * informations or debug. Default size if 64 kB.
s/informations or debug/informational and debug messages/
+++ b/src/util/logging.c @@ -36,6 +36,7 @@ #endif
#include "ignore-value.h" +#include "virterror_internal.h" #include "logging.h" #include "memory.h" #include "util.h" @@ -43,6 +44,8 @@ #include "threads.h" #include "files.h"
+#define VIR_FROM_THIS VIR_FROM_NONE
'make syntax-check' won't like you; you forgot to edit po/POTFILES.in.
Hum, no it passes, really ! I believe it checks only for translatable strings (that's normal) but I didn't add any :-)
@@ -192,15 +197,85 @@ int virLogStartup(void) {
virLogInitialized = 1; virLogLock(); + if (VIR_ALLOC_N(virLogBuffer, virLogSize) < 0) { + /* + * The debug buffer is not a critical component, allow startup + * even in case of failure to allocate it in case of a + * configuration mistake. + */ + virLogSize = 64000;
Do we really want the non-power-of-2 size here? I guess it doesn't hurt, since the user can also give us a non-power-of-2, but sometimes enforcing the power-of-2 makes for nicer wrapping of a circular buffer.
Well we need to allocate size +1 anyway, but yeah maybe we can shave a couple of nanoseconds on some debug message :-)
+ if (VIR_ALLOC_N(virLogBuffer, virLogSize) < 0) { + pbm = "Failed to allocate debug buffer: desactivating debug log\n";
s/desactivating/deactivating/
ACK with those nits fixed.
Okay, will do except for the po since it's okay here. Thanks ! Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/