]> git.proxmox.com Git - mirror_corosync.git/commitdiff
LOG: handle closing unused logfiles better
authorAngus Salkeld <asalkeld@redhat.com>
Tue, 29 May 2012 00:30:00 +0000 (10:30 +1000)
committerAngus Salkeld <asalkeld@redhat.com>
Tue, 29 May 2012 04:02:42 +0000 (14:02 +1000)
This fixes a bug where having a second log file will close
the previous one.

Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
Reviewed-by: Fabio M. Di Nitto <fdinitto@redhat.com>
exec/logsys.c

index 01e8783df70fcc91d9c732106f2a0c048b52f056..d9ad129eb9f7d7bd6df785944676fcaaa801963b 100644 (file)
@@ -149,11 +149,14 @@ static int logsys_config_file_set_unlocked (
        char file_format[128];
 
        if (logsys_loggers[subsysid].target_id > 0) {
-               /* TODO close file
-               logsys_filter_apply(subsysid,
-                                   QB_LOG_FILTER_REMOVE,
-                                   logsys_loggers[subsysid].target_id);
-               */
+               int32_t f;
+               for (f = 0; f < logsys_loggers[subsysid].file_idx; f++) {
+                       qb_log_filter_ctl(logsys_loggers[subsysid].target_id,
+                               QB_LOG_FILTER_REMOVE,
+                               QB_LOG_FILTER_FILE,
+                               logsys_loggers[subsysid].files[f],
+                               LOG_TRACE);
+               }
        }
 
        logsys_loggers[subsysid].dirty = QB_TRUE;
@@ -192,8 +195,17 @@ static int logsys_config_file_set_unlocked (
        }
 
        if (logsys_loggers[subsysid].target_id > 0) {
-               /* no one else is using this close it */
-               qb_log_file_close(logsys_loggers[subsysid].target_id);
+               int num_using_current = 0;
+               for (i = 0; i <= LOGSYS_MAX_SUBSYS_COUNT; i++) {
+                       if (logsys_loggers[subsysid].target_id ==
+                               logsys_loggers[i].target_id) {
+                               num_using_current++;
+                       }
+               }
+               if (num_using_current == 1) {
+                       /* no one else is using this close it */
+                       qb_log_file_close(logsys_loggers[subsysid].target_id);
+               }
        }
 
        logsys_loggers[subsysid].target_id = qb_log_file_open(file);