Index: athena/lib/locker/attach.c =================================================================== RCS file: /afs/dev.mit.edu/source/repository/athena/lib/locker/attach.c,v retrieving revision 1.9 diff -u -r1.9 attach.c --- attach.c 2000/08/02 22:09:55 1.9 +++ attach.c 2001/08/04 02:18:38 @@ -235,6 +235,9 @@ locker__remove_mountpoint(context, at); return status; } + + /* Release the lock on the directory we have just created. */ + locker__put_mountpoint(context, at); } else status = LOCKER_EALREADY; Index: athena/lib/locker/locker_private.h =================================================================== RCS file: /afs/dev.mit.edu/source/repository/athena/lib/locker/locker_private.h,v retrieving revision 1.5 diff -u -r1.5 locker_private.h --- locker_private.h 2000/04/24 02:13:44 1.5 +++ locker_private.h 2001/08/04 02:06:54 @@ -128,6 +128,7 @@ char **pathp, char **extp); int locker__build_mountpoint(locker_context context, locker_attachent *at); int locker__remove_mountpoint(locker_context context, locker_attachent *at); +void locker__put_mountpoint(locker_context context, locker_attachent *at); /* Prototypes from util.c */ int locker__read_line(FILE *fp, char **buf, int *bufsize); Index: athena/lib/locker/mountpoint.c =================================================================== RCS file: /afs/dev.mit.edu/source/repository/athena/lib/locker/mountpoint.c,v retrieving revision 1.10 diff -u -r1.10 mountpoint.c --- mountpoint.c 2000/10/13 23:19:27 1.10 +++ mountpoint.c 2001/08/04 02:06:33 @@ -427,6 +427,12 @@ return status; } +/* Unlock the mountpoint created by locker__build_mountpoint(). */ +void locker__put_mountpoint(locker_context context, locker_attachent *at) +{ + release_dirlock(context, at); +} + /* Lock the dirlock file. type should be F_RDLCK if you are creating * directories and F_WRLCK if you are deleting them. A process that creates * directories should hold onto the lock until it has actually finished