From: Derrick Brashear Date: Fri, 21 Jun 2013 14:50:16 +0000 (-0400) Subject: libafs: track dynroot locks for cmdebug X-Git-Tag: openafs-stable-1_8_0pre1~1115 X-Git-Url: http://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=8ba81c38a5ebe53cb7a12673e7cd100b1dbd29ff libafs: track dynroot locks for cmdebug the dynroot dir and symlink locks are not currently tracked; it would be helpful to know when these locks are in play for tracking contention Change-Id: Ibe18586fa5d0ef0e3ea9e7153d79ab64df46ebf3 Reviewed-on: http://gerrit.openafs.org/9997 Tested-by: BuildBot Reviewed-by: Jeffrey Altman --- diff --git a/src/afs/afs_callback.c b/src/afs/afs_callback.c index c2d36a1..7e0e2dd 100644 --- a/src/afs/afs_callback.c +++ b/src/afs/afs_callback.c @@ -65,6 +65,8 @@ static struct ltable { { "afs_discon_lock", (char *)&afs_discon_lock}, { "afs_disconDirtyLock", (char *)&afs_disconDirtyLock}, { "afs_discon_vc_dirty", (char *)&afs_xvcdirty}, + { "afs_dynrootDirLock", (char *)&afs_dynrootDirLock}, + { "afs_dynSymlinkLock", (char *)&afs_dynSymlinkLock}, }; unsigned long lastCallBack_vnode; unsigned int lastCallBack_dv; diff --git a/src/afs/afs_dynroot.c b/src/afs/afs_dynroot.c index 9ca8131..144a2d4 100644 --- a/src/afs/afs_dynroot.c +++ b/src/afs/afs_dynroot.c @@ -54,7 +54,7 @@ static int afs_dynrootInit = 0; static int afs_dynrootEnable = 0; static int afs_dynrootCell = 0; -static afs_rwlock_t afs_dynrootDirLock; +afs_rwlock_t afs_dynrootDirLock; /* Start of variables protected by afs_dynrootDirLock */ static char *afs_dynrootDir = NULL; static int afs_dynrootDirLen; @@ -74,7 +74,7 @@ struct afs_dynSymlink { char *target; }; -static afs_rwlock_t afs_dynSymlinkLock; +afs_rwlock_t afs_dynSymlinkLock; /* Start of variables protected by afs_dynSymlinkLock */ static struct afs_dynSymlink *afs_dynSymlinkBase = NULL; static int afs_dynSymlinkIndex = 0; diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h index 0c0f445..f98aef2 100644 --- a/src/afs/afs_prototypes.h +++ b/src/afs/afs_prototypes.h @@ -290,6 +290,8 @@ extern void afs_PopulateDCache(struct vcache *avc, afs_size_t apos, /* afs_disconnected.c */ /* afs_dynroot.c */ +extern afs_rwlock_t afs_dynrootDirLock; +extern afs_rwlock_t afs_dynSymlinkLock; extern int afs_IsDynrootFid(struct VenusFid *fid); extern int afs_IsDynrootMountFid(struct VenusFid *fid); extern int afs_IsDynrootAnyFid(struct VenusFid *fid);