libafs: track dynroot locks for cmdebug
authorDerrick Brashear <shadow@your-file-system.com>
Fri, 21 Jun 2013 14:50:16 +0000 (10:50 -0400)
committerJeffrey Altman <jaltman@your-file-system.com>
Fri, 21 Jun 2013 15:44:46 +0000 (08:44 -0700)
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 <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>

src/afs/afs_callback.c
src/afs/afs_dynroot.c
src/afs/afs_prototypes.h

index c2d36a1..7e0e2dd 100644 (file)
@@ -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;
index 9ca8131..144a2d4 100644 (file)
@@ -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;
index 0c0f445..f98aef2 100644 (file)
@@ -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);