[lvm-devel] master - libdaemon-server: Optimize logging for a fast no-output path.

Petr Rockai mornfall at fedoraproject.org
Tue Oct 9 05:52:50 UTC 2012


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=4b4c2833d984f6b6a8dde394168b4653cdd47863
Commit:        4b4c2833d984f6b6a8dde394168b4653cdd47863
Parent:        cc9c02fe68f6ee8f5f6bcf885c1ed41387778bb7
Author:        Petr Rockai <prockai at redhat.com>
AuthorDate:    Mon Oct 8 18:34:33 2012 +0200
Committer:     Petr Rockai <prockai at redhat.com>
CommitterDate: Mon Oct 8 20:35:29 2012 +0200

libdaemon-server: Optimize logging for a fast no-output path.

---
 libdaemon/server/daemon-log.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/libdaemon/server/daemon-log.c b/libdaemon/server/daemon-log.c
index 837fffd..b31bb4e 100644
--- a/libdaemon/server/daemon-log.c
+++ b/libdaemon/server/daemon-log.c
@@ -52,6 +52,16 @@ void daemon_log(log_state *s, int type, const char *message) {
 	}
 }
 
+static int _type_interesting(log_state *s, int type) {
+	int i = 0;
+	while ( backend[i].id ) {
+		if ( (s->log_config[type] & backend[i].id) == backend[i].id )
+			return 1;
+		++ i;
+	}
+	return 0;
+}
+
 void daemon_logf(log_state *s, int type, const char *fmt, ...) {
 	char *buf;
 	va_list ap;
@@ -78,12 +88,18 @@ static int _log_line(const char *line, void *baton) {
 
 void daemon_log_cft(log_state *s, int type, const char *prefix, const struct dm_config_node *n)
 {
+	if (!_type_interesting(s, type))
+		return;
+
 	struct log_line_baton b = { .s = s, .type = type, .prefix = prefix };
 	dm_config_write_node(n, &_log_line, &b);
 }
 
 void daemon_log_multi(log_state *s, int type, const char *prefix, const char *msg)
 {
+	if (!_type_interesting(s, type))
+		return;
+
 	struct log_line_baton b = { .s = s, .type = type, .prefix = prefix };
 	char *buf = dm_strdup(msg);
 	char *pos = buf;




More information about the lvm-devel mailing list