From ec26dae2bf32e4187e6eb5ffa0e68da143ed3713 Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Thu, 26 May 2011 02:04:08 -0400 Subject: [PATCH] macos: bulkstat sysctl make bulkstat enable/disableable via sysctl Change-Id: Ib1657964d62e402e96762394b7b61ed5e58a5fc9 Reviewed-on: http://gerrit.openafs.org/4723 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/afs/DARWIN/osi_vfsops.c | 4 ++++ src/afs/VNOPS/afs_vnop_lookup.c | 4 ++++ src/afs/sysctl.h | 1 + src/platform/DARWIN/afssettings.m | 1 + 4 files changed, 10 insertions(+) diff --git a/src/afs/DARWIN/osi_vfsops.c b/src/afs/DARWIN/osi_vfsops.c index 28e7ac9..7f0aac7 100644 --- a/src/afs/DARWIN/osi_vfsops.c +++ b/src/afs/DARWIN/osi_vfsops.c @@ -448,6 +448,7 @@ afs_sync(struct mount *mp, int waitfor, struct ucred *cred, struct proc *p) u_int32_t afs_darwin_realmodes = 0; u_int32_t afs_darwin_fsevents = 0; +extern int AFSDOBULK; int afs_sysctl_int(int *name, u_int namelen, user_addr_t oldp, size_t *oldlenp, @@ -504,6 +505,9 @@ afs_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, case AFS_SC_DARWIN_ALL_FSEVENTS: return afs_sysctl_int(name, namelen, oldp, oldlenp, newp, newlen, &afs_darwin_fsevents); + case AFS_SC_DARWIN_ALL_BULKSTAT: + return afs_sysctl_int(name, namelen, oldp, oldlenp, + newp, newlen, &AFSDOBULK); } break; /* darwin version specific sysctl's goes here */ diff --git a/src/afs/VNOPS/afs_vnop_lookup.c b/src/afs/VNOPS/afs_vnop_lookup.c index 3a8ea1b..103a586 100644 --- a/src/afs/VNOPS/afs_vnop_lookup.c +++ b/src/afs/VNOPS/afs_vnop_lookup.c @@ -1336,7 +1336,11 @@ afs_DoBulkStat(struct vcache *adp, long dirCookie, struct vrequest *areqp) } /* was: (AFS_DEC_ENV) || defined(AFS_OSF30_ENV) || defined(AFS_NCR_ENV) */ +#ifdef AFS_DARWIN80_ENV +int AFSDOBULK = 1; +#else static int AFSDOBULK = 1; +#endif static_inline int osi_lookup_isdot(const char *aname) diff --git a/src/afs/sysctl.h b/src/afs/sysctl.h index a13b2e4..d9eba6a 100644 --- a/src/afs/sysctl.h +++ b/src/afs/sysctl.h @@ -27,6 +27,7 @@ /* AFS_SC_DARWIN_ALL sysctls */ #define AFS_SC_DARWIN_ALL_REALMODES 1 #define AFS_SC_DARWIN_ALL_FSEVENTS 2 +#define AFS_SC_DARWIN_ALL_BULKSTAT 3 /* AFS_SC_AIX: aix platforms */ #define AFS_SC_AIX_ALL 0 diff --git a/src/platform/DARWIN/afssettings.m b/src/platform/DARWIN/afssettings.m index c5a32bf..351491e 100644 --- a/src/platform/DARWIN/afssettings.m +++ b/src/platform/DARWIN/afssettings.m @@ -149,6 +149,7 @@ recurse(id obj, Setting *s, int level, int myoid[]) Setting sysctl_darwin_all[] = { {@"RealModes", AFS_SC_DARWIN_ALL_REALMODES, LeafNum, NULL}, {@"FSEvents", AFS_SC_DARWIN_ALL_FSEVENTS, LeafNum, NULL}, + {@"Bulkstat", AFS_SC_DARWIN_ALL_BULKSTAT, LeafNum, NULL}, {NULL, 0, 0, NULL} }; Setting sysctl_darwin[] = { -- 1.9.4