viced don't double-print start time
[openafs.git] / src / viced / viced.c
index 6f0c282..83bb3af 100644 (file)
 #undef SHARED
 #include <rx/xdr.h>
 #include <afs/nfs.h>
-#ifdef AFS_PTHREAD_ENV
-#include <assert.h>
-#else /* AFS_PTHREAD_ENV */
-#include <afs/assert.h>
-#endif /* AFS_PTHREAD_ENV */
+#include <afs/afs_assert.h>
 #include <lwp.h>
 #include <lock.h>
 #include <afs/ptclient.h>
@@ -269,8 +265,8 @@ static int fs_stateInit(void)
     fs_state.options.fs_state_verify_before_save = 1;
     fs_state.options.fs_state_verify_after_restore = 1;
 
-    assert(pthread_cond_init(&fs_state.worker_done_cv, NULL) == 0);
-    assert(pthread_rwlock_init(&fs_state.state_lock, NULL) == 0);
+    CV_INIT(&fs_state.worker_done_cv, "worker done", CV_DEFAULT, 0);
+    osi_Assert(pthread_rwlock_init(&fs_state.state_lock, NULL) == 0);
 }
 #endif /* AFS_NT40_ENV */
 #endif /* AFS_DEMAND_ATTACH_FS */
@@ -441,10 +437,8 @@ setThreadId(char *s)
 {
 #if defined(AFS_PTHREAD_ENV) && !defined(AFS_NT40_ENV)
     /* set our 'thread-id' so that the host hold table works */
-    MUTEX_ENTER(&rx_stats_mutex);      /* protects rxi_pthread_hinum */
-    ++rxi_pthread_hinum;
-    pthread_setspecific(rx_thread_id_key, (void *)(intptr_t)rxi_pthread_hinum);
-    MUTEX_EXIT(&rx_stats_mutex);
+    pthread_setspecific(rx_thread_id_key,
+                       (void *)(intptr_t)rx_NewThreadId());
     ViceLog(0,
            ("Set thread id %p for '%s'\n",
             pthread_getspecific(rx_thread_id_key), s));
@@ -511,7 +505,7 @@ FiveMinuteCheckLWP(void *unused)
 #ifdef AFS_DEMAND_ATTACH_FS
     fs_state.FiveMinuteLWP_tranquil = 1;
     FS_LOCK;
-    assert(pthread_cond_broadcast(&fs_state.worker_done_cv)==0);
+    CV_BROADCAST(&fs_state.worker_done_cv);
     FS_UNLOCK;
     FS_STATE_UNLOCK;
 #endif
@@ -563,7 +557,7 @@ HostCheckLWP(void *unused)
 #ifdef AFS_DEMAND_ATTACH_FS
     fs_state.HostCheckLWP_tranquil = 1;
     FS_LOCK;
-    assert(pthread_cond_broadcast(&fs_state.worker_done_cv)==0);
+    CV_BROADCAST(&fs_state.worker_done_cv);
     FS_UNLOCK;
     FS_STATE_UNLOCK;
 #endif
@@ -599,9 +593,8 @@ FsyncCheckLWP(void *unused)
        fsync_next.tv_nsec = 0;
        fsync_next.tv_sec = time(0) + fiveminutes;
 
-       code =
-           pthread_cond_timedwait(&fsync_cond, &fsync_glock_mutex,
-                                  &fsync_next);
+       code = CV_TIMEDWAIT(&fsync_cond, &fsync_glock_mutex,
+                           &fsync_next);
        if (code != 0 && code != ETIMEDOUT)
            ViceLog(0, ("pthread_cond_timedwait returned %d\n", code));
 #else /* AFS_PTHREAD_ENV */
@@ -630,7 +623,7 @@ FsyncCheckLWP(void *unused)
 #ifdef AFS_DEMAND_ATTACH_FS
     fs_state.FsyncCheckLWP_tranquil = 1;
     FS_LOCK;
-    assert(pthread_cond_broadcast(&fs_state.worker_done_cv)==0);
+    CV_BROADCAST(&fs_state.worker_done_cv);
     FS_UNLOCK;
     FS_STATE_UNLOCK;
 #endif /* AFS_DEMAND_ATTACH_FS */
@@ -716,6 +709,9 @@ PrintCounters(void)
     int workstations, activeworkstations, delworkstations;
     int processSize = 0;
     char tbuffer[32];
+#ifdef AFS_DEMAND_ATTACH_FS
+    int stats_flags = 0;
+#endif
 
     FT_GetTimeOfDay(&tpl, 0);
     Statistics = 1;
@@ -724,9 +720,12 @@ PrintCounters(void)
             afs_ctime(&StartTime, tbuffer, sizeof(tbuffer))));
 
 #ifdef AFS_DEMAND_ATTACH_FS
-    /* XXX perhaps set extended stats verbosity flags
-     * based upon LogLevel ?? */
-    VPrintExtendedCacheStats(VOL_STATS_PER_CHAIN2);
+    if (LogLevel >= 125) {
+       stats_flags = VOL_STATS_PER_CHAIN2;
+    } else if (LogLevel >= 25) {
+       stats_flags = VOL_STATS_PER_CHAIN;
+    }
+    VPrintExtendedCacheStats(stats_flags);
 #endif
     VPrintCacheStats();
     VPrintDiskStats();
@@ -784,7 +783,8 @@ ShutdownWatchdogLWP(void *unused)
     sleep(panic_timeout);
     ViceLog(0, ("ShutdownWatchdogLWP: Failed to shutdown and panic "
                 "within %d seconds; forcing panic\n", panic_timeout));
-    assert(0);
+    osi_Panic("ShutdownWatchdogLWP: Failed to shutdown and panic "
+             "within %d seconds; forcing panic\n", panic_timeout);
     return NULL;
 }
 
@@ -798,11 +798,11 @@ ShutDownAndCore(int dopanic)
 #ifdef AFS_PTHREAD_ENV
        pthread_t watchdogPid;
        pthread_attr_t tattr;
-       assert(pthread_attr_init(&tattr) == 0);
-       assert(pthread_create(&watchdogPid, &tattr, ShutdownWatchdogLWP, NULL) == 0);
+       osi_Assert(pthread_attr_init(&tattr) == 0);
+       osi_Assert(pthread_create(&watchdogPid, &tattr, ShutdownWatchdogLWP, NULL) == 0);
 #else
        PROCESS watchdogPid;
-       assert(LWP_CreateProcess
+       osi_Assert(LWP_CreateProcess
               (ShutdownWatchdogLWP, stack * 1024, LWP_MAX_PRIORITY - 2,
                NULL, "ShutdownWatchdog", &watchdogPid) == LWP_SUCCESS);
 #endif
@@ -860,7 +860,7 @@ ShutDownAndCore(int dopanic)
                FS_LOCK;
                FS_STATE_UNLOCK;
                ViceLog(0, ("waiting for background host/callback threads to quiesce before saving fileserver state...\n"));
-               assert(pthread_cond_wait(&fs_state.worker_done_cv, &fileproc_glock_mutex) == 0);
+               CV_WAIT(&fs_state.worker_done_cv, &fileproc_glock_mutex);
                FS_UNLOCK;
                FS_STATE_RDLOCK;
            }
@@ -889,8 +889,8 @@ ShutDownAndCore(int dopanic)
               afs_ctime(&now, tbuffer, sizeof(tbuffer))));
     }
 
-    if (dopanic)
-       assert(0);
+    if (dopanic) /* XXX pass in file and line? */
+       osi_Panic("Panic requested\n");
 
     exit(0);
 }
@@ -1567,7 +1567,7 @@ void
 Die(char *msg)
 {
     ViceLog(0, ("%s\n", msg));
-    assert(0);
+    osi_Panic("%s\n", msg);
 
 }                              /*Die */
 
@@ -1589,7 +1589,7 @@ InitPR(void)
     }
 
 #ifdef AFS_PTHREAD_ENV
-    assert(pthread_key_create(&viced_uclient_key, NULL) == 0);
+    osi_Assert(pthread_key_create(&viced_uclient_key, NULL) == 0);
 #endif
 
     SystemId = SYSADMINID;
@@ -1981,7 +1981,7 @@ main(int argc, char *argv[])
        exit(-1);
     }
 #ifdef AFS_PTHREAD_ENV
-    assert(pthread_mutex_init(&fileproc_glock_mutex, NULL) == 0);
+    MUTEX_INIT(&fileproc_glock_mutex, "fileproc", MUTEX_DEFAULT, 0);
 #endif /* AFS_PTHREAD_ENV */
 
 #ifdef AFS_SGI_VNODE_GLUE
@@ -2032,7 +2032,7 @@ main(int argc, char *argv[])
     nice(-5);                  /* TODO: */
 #endif
 #endif
-    assert(DInit(buffs) == 0);
+    osi_Assert(DInit(buffs) == 0);
 #ifdef AFS_DEMAND_ATTACH_FS
     FS_STATE_INIT;
 #endif
@@ -2085,7 +2085,7 @@ main(int argc, char *argv[])
                 curLimit, lwps, vol_io_params.fd_max_cachesize));
     }
 #ifndef AFS_PTHREAD_ENV
-    assert(LWP_InitializeProcessSupport(LWP_MAX_PRIORITY - 2, &parentPid) ==
+    osi_Assert(LWP_InitializeProcessSupport(LWP_MAX_PRIORITY - 2, &parentPid) ==
           LWP_SUCCESS);
 #endif /* !AFS_PTHREAD_ENV */
 
@@ -2207,10 +2207,8 @@ main(int argc, char *argv[])
     /* allow super users to manage RX statistics */
     rx_SetRxStatUserOk(fs_rxstat_userok);
 
-#ifdef AFS_PTHREAD_ENV
-    assert(pthread_cond_init(&fsync_cond, NULL) == 0);
-    assert(pthread_mutex_init(&fsync_glock_mutex, NULL) == 0);
-#endif
+    CV_INIT(&fsync_cond, "fsync", CV_DEFAULT, 0);
+    MUTEX_INIT(&fsync_glock_mutex, "fsync", MUTEX_DEFAULT, 0);
 
 #if !defined(AFS_DEMAND_ATTACH_FS)
     /*
@@ -2296,36 +2294,33 @@ main(int argc, char *argv[])
 
 #ifdef AFS_PTHREAD_ENV
     ViceLog(5, ("Starting pthreads\n"));
-    assert(pthread_attr_init(&tattr) == 0);
-    assert(pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_DETACHED) == 0);
+    osi_Assert(pthread_attr_init(&tattr) == 0);
+    osi_Assert(pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_DETACHED) == 0);
 
-    assert(pthread_create
+    osi_Assert(pthread_create
           (&serverPid, &tattr, FiveMinuteCheckLWP,
            &fiveminutes) == 0);
-    assert(pthread_create
+    osi_Assert(pthread_create
           (&serverPid, &tattr, HostCheckLWP, &fiveminutes) == 0);
-    assert(pthread_create
+    osi_Assert(pthread_create
           (&serverPid, &tattr, FsyncCheckLWP, &fiveminutes) == 0);
 #else /* AFS_PTHREAD_ENV */
     ViceLog(5, ("Starting LWP\n"));
-    assert(LWP_CreateProcess
+    osi_Assert(LWP_CreateProcess
           (FiveMinuteCheckLWP, stack * 1024, LWP_MAX_PRIORITY - 2,
            (void *)&fiveminutes, "FiveMinuteChecks",
            &serverPid) == LWP_SUCCESS);
 
-    assert(LWP_CreateProcess
+    osi_Assert(LWP_CreateProcess
           (HostCheckLWP, stack * 1024, LWP_MAX_PRIORITY - 2,
            (void *)&fiveminutes, "HostCheck", &serverPid) == LWP_SUCCESS);
-    assert(LWP_CreateProcess
+    osi_Assert(LWP_CreateProcess
           (FsyncCheckLWP, stack * 1024, LWP_MAX_PRIORITY - 2,
            (void *)&fiveminutes, "FsyncCheck", &serverPid) == LWP_SUCCESS);
 #endif /* AFS_PTHREAD_ENV */
 
     FT_GetTimeOfDay(&tp, 0);
 
-    ViceLog(0, ("File server has started at %s",
-               afs_ctime((time_t *)&(tp.tv_sec), tbuffer, sizeof(tbuffer))));
-
     /*
      * Figure out the FileServer's name and primary address.
      */
@@ -2362,7 +2357,7 @@ main(int argc, char *argv[])
        sleep(1000);            /* long time */
     }
 #else /* AFS_PTHREAD_ENV */
-    assert(LWP_WaitProcess(&parentPid) == LWP_SUCCESS);
+    osi_Assert(LWP_WaitProcess(&parentPid) == LWP_SUCCESS);
 #endif /* AFS_PTHREAD_ENV */
     return 0;
 }