]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Reopen the correct filename when -logfile is given
authorMichael Meffie <mmeffie@sinenomine.net>
Thu, 5 Feb 2015 21:59:52 +0000 (16:59 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Mon, 25 Apr 2016 04:08:59 +0000 (00:08 -0400)
The name of the log file passed to ReOpenLog() may not match the name
given in the initial OpenLog() call. This can happen when the -logfile
option is given to the fileserver or volume server.

Since the name given to ReOpenLog() must match the original name, change
ReOpenLog() to use the name previously given to OpenLog() and update all
callers.

Change-Id: Ie6fa4cb6e3c03f853efe0207bbec5d8412c6fe59
Reviewed-on: https://gerrit.openafs.org/11723
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
src/kauth/krb_udp.c
src/util/afsutil.h
src/util/afsutil_prototypes.h
src/util/serverLog.c
src/viced/viced.c
src/volser/volmain.c

index d3e670eee4f699d3ccc40a4e6bcacc1721f7695c..f4b84775d37fbf5bce47718ee92d811d86d3d34e 100644 (file)
@@ -111,7 +111,7 @@ FiveMinuteCheckLWP(void *unused)
     while (1) {
        IOMGR_Sleep(fiveminutes);
        /* close the log so it can be removed */
-       ReOpenLog(AFSDIR_SERVER_KALOG_FILEPATH);        /* no trunc, just append */
+       ReOpenLog();    /* no trunc, just append */
     }
     return NULL;
 }
index 214bcebc80308873b75723a6fd3da8b7f8fe2259..53db42a3d961535a30666f85a29a22ce2003d963 100644 (file)
@@ -54,7 +54,7 @@ extern void FSLog(const char *format, ...)
     do { ViceLog(level, str); osi_Panic str; } while(0);
 
 extern int OpenLog(const char *filename);
-extern int ReOpenLog(const char *fileName);
+extern int ReOpenLog(void);
 extern void SetupLogSignals(void);
 extern void CloseLog(void);
 extern void SetupLogSoftSignals(void);
index 2091164469ea22c6251ce7fab5cb1db6af25d8e7..beb03f331fe822a665b7e104b37bd920494fd699 100644 (file)
@@ -130,7 +130,7 @@ extern void SetDebug_Signal(int signo);
 extern void ResetDebug_Signal(int signo);
 extern void SetupLogSignals(void);
 extern int OpenLog(const char *fileName);
-extern int ReOpenLog(const char *fileName);
+extern int ReOpenLog(void);
 extern int LogThreadNum(void);
 extern void LogCommandLine(int argc, char **argv, const char *progname,
                           const char *version, const char *logstring,
index b42525b74e7830d06ddcd65a9c1d71a58bd9cc7c..04ab263d3e7c34ab31690a9ac25984a42bd28007 100644 (file)
@@ -460,8 +460,16 @@ OpenLog(const char *fileName)
     return 0;
 }                              /*OpenLog */
 
+/*!
+ * Reopen the log file descriptor.
+ *
+ * Reopen the log file descriptor in order to support rotation
+ * of the log files.  Has no effect when logging to the syslog.
+ *
+ * \returns  0 on success
+ */
 int
-ReOpenLog(const char *fileName)
+ReOpenLog(void)
 {
     int flags = O_WRONLY | O_APPEND | O_CREAT;
 
@@ -471,16 +479,19 @@ ReOpenLog(const char *fileName)
     }
 #endif
 
-    if (IsFIFO(fileName)) {
+    LOCK_SERVERLOG();
+    if (ourName == NULL) {
+       UNLOCK_SERVERLOG();
+       return -1;
+    }
+    if (IsFIFO(ourName)) {
        flags |= O_NONBLOCK;
     }
-
-    LOCK_SERVERLOG();
     if (serverLogFD >= 0)
        close(serverLogFD);
-    serverLogFD = open(fileName, flags, 0666);
+    serverLogFD = open(ourName, flags, 0666);
     if (serverLogFD >= 0) {
-        RedirectStdStreams(fileName);
+        RedirectStdStreams(ourName);
     }
     UNLOCK_SERVERLOG();
     return serverLogFD < 0 ? -1 : 0;
index 989ad8eb168bfed30f48388ed312d54c3d1a144e..cbfa01c7bbf9910b106e29b6a8a183e3d6c76fd2 100644 (file)
@@ -402,7 +402,7 @@ FiveMinuteCheckLWP(void *unused)
 #endif
 
        /* close the log so it can be removed */
-       ReOpenLog(AFSDIR_SERVER_FILELOG_FILEPATH);      /* don't trunc, just append */
+       ReOpenLog();    /* don't trunc, just append */
        ViceLog(2, ("Cleaning up timed out callbacks\n"));
        if (CleanupTimedOutCallBacks())
            ViceLog(5, ("Timed out callbacks deleted\n"));
index e3852143269978548e4f32c8928202f04c8e159e..33f8b56a454d998c0aba77708e1b4cab5f0db17e 100644 (file)
@@ -150,7 +150,7 @@ BKGLoop(void *unused)
        loop++;
        if (loop == 10) {       /* reopen log every 5 minutes */
            loop = 0;
-           ReOpenLog(AFSDIR_SERVER_VOLSERLOG_FILEPATH);
+           ReOpenLog();
        }
     }