Преглед изворни кода

logging: Close before and open blackbox after fork

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
(cherry picked from commit 11fa527ed4960488d275867c28b1bff773e9cf7f)
Jan Friesse пре 8 година
родитељ
комит
995ed0bd81
3 измењених фајлова са 27 додато и 0 уклоњено
  1. 16 0
      exec/logsys.c
  2. 6 0
      exec/main.c
  3. 5 0
      include/corosync/logsys.h

+ 16 - 0
exec/logsys.c

@@ -862,3 +862,19 @@ void logsys_blackbox_set(int enable)
 
 	pthread_mutex_unlock (&logsys_config_mutex);
 }
+
+/*
+ * To set correct pid to qb blackbox filename after tty dettach (fork) we have to
+ * close (this function) and (if needed) reopen blackbox (logsys_blackbox_postfork function).
+ */
+void logsys_blackbox_prefork(void)
+{
+
+	(void)qb_log_ctl(QB_LOG_BLACKBOX, QB_LOG_CONF_ENABLED, QB_FALSE);
+}
+
+void logsys_blackbox_postfork(void)
+{
+
+	_logsys_config_apply_blackbox();
+}

+ 6 - 0
exec/main.c

@@ -1460,7 +1460,13 @@ int main (int argc, char **argv, char **envp)
 	 * Now we are fully initialized.
 	 */
 	if (background) {
+		logsys_blackbox_prefork();
+
 		corosync_tty_detach ();
+
+		logsys_blackbox_postfork();
+
+		log_printf (LOGSYS_LEVEL_DEBUG, "Corosync TTY detached");
 	}
 
 	/*

+ 5 - 0
include/corosync/logsys.h

@@ -258,6 +258,11 @@ extern int logsys_thread_start (void);
 
 extern void logsys_blackbox_set(int enable);
 
+extern void logsys_blackbox_prefork(void);
+
+extern void logsys_blackbox_postfork(void);
+
+
 /**
  * @brief logsys_subsys_id
  */