tbutc-uses-not-thread-safe-status-20020725

"The multithreaded butc (src/tbutc/butc) includes bucoord/status.o, which is
compiled together with the other bucoord stuff without MT_CFLAGS and hence
without AFS_PTHREAD_ENV defined. Alas, it uses ObtainWriteLock and other
macros out of lock.h which *are* sensitive to AFS_PTHREAD_ENV. Consequently,
butc can hang trying to acquire the statusQueueLock when dumping volumes, in
particular if 'backup status' commands are issued frequently.

A proper fix would probably be to push some of those macros out of lock.h and
make them subroutines in lock.c.

A quick fix is ensuring status.c gets recompiled in tbutc/Makefile.in"
This commit is contained in:
Rainer Toebbicke 2002-07-26 05:58:39 +00:00 committed by Derrick Brashear
parent efbaa07c99
commit fd2cb884e2

View File

@ -28,7 +28,7 @@ BUCOORD = ${srcdir}/../bucoord
VOLSER = ${srcdir}/../volser
BUCOORDOBJS=ubik_db_if.o ../bucoord/volstub.o ../bucoord/dlq.o \
../bucoord/status.o ../bucoord/bucoord_errs.o
status.o ../bucoord/bucoord_errs.o
VOLSERLIBOBJ=../volser/volint.cs.o vsprocs.o ../volser/vsutils.o \
../volser/lockprocs.o ../volser/volint.xdr.o ../volser/volerr.o \
@ -121,6 +121,9 @@ butc_xbsa.o: ${BUTC}/butc_xbsa.c ${BUTC}/butc_xbsa.h ${BUTCINCLS}
ubik_db_if.o: ${BUCOORD}/ubik_db_if.c
${CC} ${CFLAGS} -c ${BUCOORD}/ubik_db_if.c
status.o: ${BUCOORD}/status.c
${CC} ${CFLAGS} -c ${BUCOORD}/status.c
vsprocs.o: ${VOLSER}/vsprocs.c
${CC} ${CFLAGS} -c ${VOLSER}/vsprocs.c