From 192ba0deae276e5bbea2580da2019a4d743daab3 Mon Sep 17 00:00:00 2001 From: Garrett Wollman Date: Sun, 17 Jul 2011 21:57:20 -0400 Subject: [PATCH] pthreaded servers: set thread names In the startup function for each thread, set a thread name. This can safely be done unconditionally as LWP builds turn the call into a no-op. In general, the thread name parallels the name passed to LWP_CreateProcess, but for Rx server threads, it additionally includes the thread ID so that these threads can easily be distinguished. (I'm not sure yet whether doing so will prove to be useful or counterproductive.) Change-Id: I30e012eebef4c7856084fa8b8eb1d88d9fcdf2c4 Reviewed-on: http://gerrit.openafs.org/5041 Tested-by: Derrick Brashear Reviewed-by: Derrick Brashear --- src/budb/dbs_dump.c | 3 +++ src/butc/dbentries.c | 1 + src/butc/dump.c | 2 ++ src/butc/lwps.c | 2 ++ src/butc/recoverDb.c | 2 ++ src/butc/tcudbprocs.c | 3 +++ src/tptserver/Makefile.in | 6 +++++- src/tubik/Makefile.in | 6 +++++- src/tviced/Makefile.in | 5 ++++- src/tvlserver/Makefile.in | 5 ++++- src/tvolser/Makefile.in | 5 ++++- src/ubik/beacon.c | 2 ++ src/ubik/recovery.c | 2 ++ src/viced/viced.c | 1 + src/vol/fssync-server.c | 1 + src/vol/ihandle.c | 2 ++ src/volser/volmain.c | 1 + 17 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/budb/dbs_dump.c b/src/budb/dbs_dump.c index f1dc0b3d7..26921a9bc 100644 --- a/src/budb/dbs_dump.c +++ b/src/budb/dbs_dump.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "budb.h" #include "budb_errs.h" @@ -56,6 +57,7 @@ setupDbDump(void *param) int writeFid = (intptr_t)param; afs_int32 code = 0; + afs_pthread_setname_self("Database Dumper"); code = InitRPC(&dumpSyncPtr->ut, LOCKREAD, 1); if (code) goto error_exit; @@ -315,6 +317,7 @@ dumpWatcher(void *unused) { afs_int32 code; + afs_pthread_setname_self("Database Dump Watchdog"); while (1) { /*w */ /* printf("dumpWatcher\n"); */ diff --git a/src/butc/dbentries.c b/src/butc/dbentries.c index be9b34327..5efc3ace7 100644 --- a/src/butc/dbentries.c +++ b/src/butc/dbentries.c @@ -327,6 +327,7 @@ dbWatcher(void *unused) afs_int32 code = 0; int i, c, addedDump; + afs_pthread_setname_self("dbWatcher"); dlqInit(&entries_to_flush); dlqInit(&savedEntries); diff --git a/src/butc/dump.c b/src/butc/dump.c index 532324f89..2d95e09f6 100644 --- a/src/butc/dump.c +++ b/src/butc/dump.c @@ -1128,6 +1128,7 @@ Dumper(void *param) extern struct deviceSyncNode *deviceLatch; extern struct tapeConfig globalTapeConfig; + afs_pthread_setname_self("dumper"); taskId = nodePtr->taskID; /* Get task Id */ setStatus(taskId, DRIVE_WAIT); EnterDeviceQueue(deviceLatch); @@ -2029,6 +2030,7 @@ DeleteDump(void *param) extern struct udbHandleS udbHandle; extern struct deviceSyncNode *deviceLatch; + afs_pthread_setname_self("deletedump"); setStatus(taskId, DRIVE_WAIT); EnterDeviceQueue(deviceLatch); clearStatus(taskId, DRIVE_WAIT); diff --git a/src/butc/lwps.c b/src/butc/lwps.c index 47bc3fad2..1d80c9b1a 100644 --- a/src/butc/lwps.c +++ b/src/butc/lwps.c @@ -1638,6 +1638,7 @@ Restorer(void *param) { time_t startTime, endTime; afs_int32 goodrestore = 0; + afs_pthread_setname_self("restorer"); taskId = newNode->taskID; setStatus(taskId, DRIVE_WAIT); EnterDeviceQueue(deviceLatch); @@ -2104,6 +2105,7 @@ Labeller(void *param) afs_uint32 taskId; afs_int32 code = 0; + afs_pthread_setname_self("labeller"); taskId = labelIfPtr->taskId; setStatus(taskId, DRIVE_WAIT); EnterDeviceQueue(deviceLatch); diff --git a/src/butc/recoverDb.c b/src/butc/recoverDb.c index 40813164b..8b60945bf 100644 --- a/src/butc/recoverDb.c +++ b/src/butc/recoverDb.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -705,6 +706,7 @@ ScanDumps(void *param) afs_uint32 taskId; afs_int32 code = 0; + afs_pthread_setname_self("scandump"); taskId = ptr->taskId; setStatus(taskId, DRIVE_WAIT); EnterDeviceQueue(deviceLatch); diff --git a/src/butc/tcudbprocs.c b/src/butc/tcudbprocs.c index 450f4d53b..296652c78 100644 --- a/src/butc/tcudbprocs.c +++ b/src/butc/tcudbprocs.c @@ -640,6 +640,7 @@ saveDbToTape(void *param) extern struct deviceSyncNode *deviceLatch; extern struct tapeConfig globalTapeConfig; + afs_pthread_setname_self("Db save"); expires = (saveDbIfPtr->archiveTime ? NEVERDATE : 0); taskId = saveDbIfPtr->taskId; @@ -1022,6 +1023,7 @@ restoreDbFromTape(void *param) extern struct tapeConfig globalTapeConfig; extern struct deviceSyncNode *deviceLatch; + afs_pthread_setname_self("Db restore"); setStatus(taskId, DRIVE_WAIT); EnterDeviceQueue(deviceLatch); /* lock tape device */ clearStatus(taskId, DRIVE_WAIT); @@ -1119,6 +1121,7 @@ KeepAlive(void *unused) extern struct udbHandleS udbHandle; + afs_pthread_setname_self("Keep-alive"); while (1) { #ifdef AFS_PTHREAD_ENV sleep(5); diff --git a/src/tptserver/Makefile.in b/src/tptserver/Makefile.in index 3ac5035e7..8fe341f94 100644 --- a/src/tptserver/Makefile.in +++ b/src/tptserver/Makefile.in @@ -19,7 +19,8 @@ PTSERVER=$(srcdir)/../ptserver RXOBJS= rx_pthread.o rxkad_errs.o UTILOBJS=assert.o uuid.o serverLog.o fileutil.o netutils.o dirpath.o \ - volparse.o flipbase64.o softsig.o hostparse.o pthread_glock.o + volparse.o flipbase64.o softsig.o hostparse.o pthread_glock.o \ + pthread_threadname.o INCLS=${TOP_INCDIR}/ubik.h \ ${TOP_INCDIR}/lock.h \ @@ -94,6 +95,9 @@ hostparse.o: ${UTIL}/hostparse.c pthread_glock.o: ${UTIL}/pthread_glock.c $(AFS_CCRULE) $(UTIL)/pthread_glock.c +pthread_threadname.o: ${UTIL}/pthread_threadname.c + $(AFS_CCRULE) $(UTIL)/pthread_threadname.c + ptserver.o: ${PTSERVER}/ptserver.c ${INCLS} $(AFS_CCRULE) $(PTSERVER)/ptserver.c diff --git a/src/tubik/Makefile.in b/src/tubik/Makefile.in index b4ca2cf78..91ed1506e 100644 --- a/src/tubik/Makefile.in +++ b/src/tubik/Makefile.in @@ -27,7 +27,8 @@ INCLS=${TOP_INCDIR}/lwp.h ${TOP_INCDIR}/lock.h \ RXOBJS = rx_pthread.o UTILOBJS=assert.o uuid.o serverLog.o fileutil.o netutils.o dirpath.o \ - volparse.o flipbase64.o softsig.o hostparse.o pthread_glock.o + volparse.o flipbase64.o softsig.o hostparse.o pthread_glock.o \ + pthread_threadname.o LIBS=${RXOBJS} ${UTILOBJS} ${TOP_LIBDIR}/libafsauthent.a ${TOP_LIBDIR}/libafsrpc.a \ ${TOP_LIBDIR}/libafscom_err.a ${TOP_LIBDIR}/libcmd.a \ @@ -87,6 +88,9 @@ hostparse.o: ${UTIL}/hostparse.c pthread_glock.o: ${UTIL}/pthread_glock.c $(AFS_CCRULE) $(UTIL)/pthread_glock.c +pthread_threadname.o: ${UTIL}/pthread_threadname.c + $(AFS_CCRULE) $(UTIL)/pthread_threadname.c + # # insert comments here # diff --git a/src/tviced/Makefile.in b/src/tviced/Makefile.in index fcd205795..875522064 100644 --- a/src/tviced/Makefile.in +++ b/src/tviced/Makefile.in @@ -33,7 +33,7 @@ LWPOBJS=lock.o threadname.o LIBACLOBJS=aclprocs.o netprocs.o -UTILOBJS=assert.o uuid.o serverLog.o fileutil.o netutils.o dirpath.o volparse.o flipbase64.o softsig.o +UTILOBJS=assert.o uuid.o serverLog.o fileutil.o netutils.o dirpath.o volparse.o flipbase64.o softsig.o pthread_threadname.o DIROBJS=buffer.o dir.o salvage.o @@ -103,6 +103,9 @@ dirpath.o: ${UTIL}/dirpath.c softsig.o: ${UTIL}/softsig.c $(AFS_CCRULE) $(UTIL)/softsig.c +pthread_threadname.o: ${UTIL}/pthread_threadname.c + $(AFS_CCRULE) $(UTIL)/pthread_threadname.c + lock.o: ${LWP}/lock.c $(AFS_CCRULE) $(LWP)/lock.c diff --git a/src/tvlserver/Makefile.in b/src/tvlserver/Makefile.in index 3ba9acb79..9975d39d8 100644 --- a/src/tvlserver/Makefile.in +++ b/src/tvlserver/Makefile.in @@ -20,7 +20,7 @@ RXOBJS= rx_pthread.o rxkad_errs.o UTILOBJS=assert.o uuid.o serverLog.o fileutil.o netutils.o dirpath.o \ volparse.o flipbase64.o softsig.o hostparse.o pthread_glock.o \ - get_krbrlm.o + pthread_threadname.o get_krbrlm.o INCLS=${TOP_INCDIR}/ubik.h \ ${TOP_INCDIR}/lwp.h \ @@ -91,6 +91,9 @@ hostparse.o: ${UTIL}/hostparse.c pthread_glock.o: ${UTIL}/pthread_glock.c $(AFS_CCRULE) $(UTIL)/pthread_glock.c +pthread_threadname.o: ${UTIL}/pthread_threadname.c + $(AFS_CCRULE) $(UTIL)/pthread_threadname.c + get_krbrlm.o: ${UTIL}/get_krbrlm.c $(AFS_CCRULE) $(UTIL)/get_krbrlm.c diff --git a/src/tvolser/Makefile.in b/src/tvolser/Makefile.in index 3506f06cd..5bdfee6d6 100644 --- a/src/tvolser/Makefile.in +++ b/src/tvolser/Makefile.in @@ -33,7 +33,7 @@ LWPOBJS=lock.o threadname.o LIBACLOBJS=aclprocs.o netprocs.o -UTILOBJS=assert.o uuid.o serverLog.o fileutil.o netutils.o dirpath.o volparse.o flipbase64.o softsig.o +UTILOBJS=assert.o uuid.o serverLog.o fileutil.o netutils.o dirpath.o volparse.o flipbase64.o softsig.o pthread_threadname.o DIROBJS=buffer.o dir.o salvage.o @@ -127,6 +127,9 @@ dirpath.o: ${UTIL}/dirpath.c softsig.o: ${UTIL}/softsig.c $(AFS_CCRULE) $(UTIL)/softsig.c +pthread_threadname.o: ${UTIL}/pthread_threadname.c + $(AFS_CCRULE) $(UTIL)/pthread_threadname.c + lock.o: ${LWP}/lock.c $(AFS_CCRULE) $(LWP)/lock.c diff --git a/src/ubik/beacon.c b/src/ubik/beacon.c index eb2d5264d..d12274d38 100644 --- a/src/ubik/beacon.c +++ b/src/ubik/beacon.c @@ -402,6 +402,8 @@ ubeacon_Interact(void *dummy) struct ubik_version tversion; afs_int32 startTime; + afs_pthread_setname_self("beacon"); + /* loop forever getting votes */ lastWakeupTime = 0; /* keep track of time we last started a vote collection */ while (1) { diff --git a/src/ubik/recovery.c b/src/ubik/recovery.c index 6c3a8cb88..c858728d8 100644 --- a/src/ubik/recovery.c +++ b/src/ubik/recovery.c @@ -458,6 +458,8 @@ urecovery_Interact(void *dummy) int fd = -1; afs_int32 pass; + afs_pthread_setname_self("recovery"); + /* otherwise, begin interaction */ urecovery_state = 0; lastProbeTime = 0; diff --git a/src/viced/viced.c b/src/viced/viced.c index eef02ca62..6cc25aba1 100644 --- a/src/viced/viced.c +++ b/src/viced/viced.c @@ -752,6 +752,7 @@ CheckSignal(void *unused) static void * ShutdownWatchdogLWP(void *unused) { + afs_pthread_setname_self("ShutdownWatchdog"); sleep(panic_timeout); ViceLogThenPanic(0, ("ShutdownWatchdogLWP: Failed to shutdown and panic " "within %d seconds; forcing panic\n", diff --git a/src/vol/fssync-server.c b/src/vol/fssync-server.c index 25f60c3a2..f6e9c2f26 100644 --- a/src/vol/fssync-server.c +++ b/src/vol/fssync-server.c @@ -257,6 +257,7 @@ FSYNC_sync(void * args) /* set our 'thread-id' so that the host hold table works */ tid = rx_SetThreadNum(); Log("Set thread id %d for FSYNC_sync\n", tid); + afs_pthread_setname_self("FSYNC_sync"); #endif /* AFS_PTHREAD_ENV */ VOL_LOCK; diff --git a/src/vol/ihandle.c b/src/vol/ihandle.c index 892853ca9..0809aef8d 100644 --- a/src/vol/ihandle.c +++ b/src/vol/ihandle.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "nfs.h" #include "ihandle.h" @@ -988,6 +989,7 @@ ih_sync_all(void) { void * ih_sync_thread(void *dummy) { + afs_pthread_setname_self("ih_syncer"); while(1) { #ifdef AFS_PTHREAD_ENV diff --git a/src/volser/volmain.c b/src/volser/volmain.c index daf5920dd..800f33062 100644 --- a/src/volser/volmain.c +++ b/src/volser/volmain.c @@ -122,6 +122,7 @@ BKGLoop(void *unused) struct timeval tv; int loop = 0; + afs_pthread_setname_self("vol bkg"); while (1) { tv.tv_sec = GCWAKEUP; tv.tv_usec = 0; -- 2.39.5