STABLE14-dynamic-vcache-allocation-20090319

LICENSE IPL10
FIXES 124334

add dynamic allocation of vcaches when possible (currently just for linux)


(cherry picked from commit e59b81c984)
This commit is contained in:
Derrick Brashear 2009-03-20 02:32:56 +00:00
parent d6fc723d56
commit 157e3374bb
38 changed files with 235 additions and 96 deletions

View File

@ -29,6 +29,7 @@ B<afsd> [B<-afsdb>] [B<-backuptree>]
[B<-settime>] [B<-shutdown>]
S<<< [B<-splitcache> <I<RW/RO ratio>>] >>>
S<<< [B<-stat> <I<number of stat entries>>] >>> [B<-verbose>]
[B<-disable-dynamic-vcaches>]
S<<< [B<-volumes> <I<number of volume entries>>] >>>
[B<-waitclose>]
@ -669,6 +670,13 @@ standard output stream.
Specifies the number of memory structures to allocate for storing volume
location information. The default value is C<50>.
=item B<-disable-dynamic-vcaches>
By default, dynamic vcache overrides the B<-stat> option by using the value of
B<-stat> (or the default) as the initial size of the stat (or vcache) pool and
increases the pool dynamically as needed on supported platforms. This flag will
disable this new functionality and honor the '-stat' setting.
=item B<-waitclose>
Has no effect on the operation of the Cache Manager. The behavior it

View File

@ -825,7 +825,8 @@ afs_syscall_call(parm, parm2, parm3, parm4, parm5, parm6)
afs_CacheInit(cparms.cacheScaches, cparms.cacheFiles,
cparms.cacheBlocks, cparms.cacheDcaches,
cparms.cacheVolumes, cparms.chunkSize,
cparms.memCacheFlag, cparms.inodes, cparms.users);
cparms.memCacheFlag, cparms.inodes, cparms.users,
cparms.dynamic_vcaches);
} else if (parm == AFSOP_CACHEINODE) {
ino_t ainode = parm2;

View File

@ -180,7 +180,7 @@ afs_DequeueCallback(struct vcache *avc)
*/
/* Sanity check on the callback queue. Allow for slop in the computation. */
#ifdef AFS_OSF_ENV
#if defined(AFS_OSF_ENV) || defined(AFS_LINUX22_ENV)
#define CBQ_LIMIT (afs_maxvcount + 10)
#else
#define CBQ_LIMIT (afs_cacheStats + afs_stats_cmperf.vcacheXAllocs + 10)

View File

@ -40,6 +40,8 @@ static int rxepoch_checked = 0;
#define afs_CheckRXEpoch() {if (rxepoch_checked == 0 && rxkad_EpochWasSet) { \
rxepoch_checked = 1; afs_GCUserData(/* force flag */ 1); } }
extern int afsd_dynamic_vcaches;
/* PAG garbage collection */
/* We induce a compile error if param.h does not define AFS_GCPAGS */
afs_int32 afs_gcpags = AFS_GCPAGS;
@ -116,13 +118,13 @@ afs_Daemon(void)
struct afs_exporter *exporter;
afs_int32 now;
afs_int32 last3MinCheck, last10MinCheck, last60MinCheck, lastNMinCheck;
afs_int32 last1MinCheck;
afs_int32 last1MinCheck, last5MinCheck;
afs_uint32 lastCBSlotBump;
char cs_warned = 0;
AFS_STATCNT(afs_Daemon);
last1MinCheck = last3MinCheck = last60MinCheck = last10MinCheck =
lastNMinCheck = 0;
last5MinCheck = lastNMinCheck = 0;
afs_rootFid.Fid.Volume = 0;
while (afs_initState < 101)
@ -150,6 +152,7 @@ afs_Daemon(void)
last3MinCheck = now - 90 + ((afs_random() & 0x7fffffff) % 180);
last60MinCheck = now - 1800 + ((afs_random() & 0x7fffffff) % 3600);
last10MinCheck = now - 300 + ((afs_random() & 0x7fffffff) % 600);
last5MinCheck = now - 150 + ((afs_random() & 0x7fffffff) % 300);
lastNMinCheck = now - 90 + ((afs_random() & 0x7fffffff) % 180);
/* start off with afs_initState >= 101 (basic init done) */
@ -191,6 +194,19 @@ afs_Daemon(void)
* tickets */
last3MinCheck = now;
}
#ifdef AFS_MAXVCOUNT_ENV
if (afsd_dynamic_vcaches && (last5MinCheck + 300 < now)) {
/* start with trying to drop us back to our base usage */
int anumber;
if (afs_maxvcount <= afs_cacheStats)
anumber = VCACHE_FREE;
else
anumber = VCACHE_FREE + (afs_maxvcount - afs_cacheStats);
afs_ShakeLooseVCaches(anumber);
last5MinCheck = now;
}
#endif
if (!afs_CheckServerDaemonStarted) {
/* Do the check here if the correct afsd is not installed. */
if (!cs_warned) {

View File

@ -45,6 +45,9 @@ int afs_memvolumes = 0;
static struct vnode *volumeVnode;
#endif
/* This is the kernel side of the dynamic vcache setting */
int afsd_dynamic_vcaches = 0; /* Enable dynamic-vcache support */
/*
* Initialization order is important. Must first call afs_CacheInit,
* then cache file and volume file initialization routines. Next, the
@ -81,7 +84,7 @@ static int afs_cacheinit_flag = 0;
int
afs_CacheInit(afs_int32 astatSize, afs_int32 afiles, afs_int32 ablocks,
afs_int32 aDentries, afs_int32 aVolumes, afs_int32 achunk,
afs_int32 aflags, afs_int32 ninodes, afs_int32 nusers)
afs_int32 aflags, afs_int32 ninodes, afs_int32 nusers, afs_int32 dynamic_vcaches)
{
register afs_int32 i;
register struct volume *tv;
@ -98,6 +101,13 @@ afs_CacheInit(afs_int32 astatSize, afs_int32 afiles, afs_int32 ablocks,
afs_stats_cmperf.sysName_ID = SYS_NAME_ID_UNDEFINED;
#endif /* SYS_NAME_ID */
#ifdef AFS_MAXVCOUNT_ENV
afsd_dynamic_vcaches = dynamic_vcaches;
printf("%s dynamically allocated vcaches\n", ( afsd_dynamic_vcaches ? "enabling" : "disabling" ));
#else
afsd_dynamic_vcaches = 0;
#endif
printf("Starting AFS cache scan...");
if (afs_cacheinit_flag)
return 0;

View File

@ -376,7 +376,7 @@ extern int afs_CacheInit(afs_int32 astatSize, afs_int32 afiles,
afs_int32 ablocks, afs_int32 aDentries,
afs_int32 aVolumes, afs_int32 achunk,
afs_int32 aflags, afs_int32 ninodes,
afs_int32 nusers);
afs_int32 nusers, afs_int32 dynamic_vcaches);
extern void afs_ComputeCacheParms(void);
extern int afs_InitCacheInfo(register char *afile);
extern int afs_InitVolumeInfo(char *afile);

View File

@ -77,6 +77,7 @@ struct afs_q afs_vhashTV[VCSIZE];
static struct afs_cbr *afs_cbrHashT[CBRSIZE];
afs_int32 afs_bulkStatsLost;
int afs_norefpanic = 0;
extern int afsd_dynamic_vcaches;
/* Forward declarations */
static afs_int32 afs_QueueVCB(struct vcache *avc);
@ -253,6 +254,7 @@ afs_FlushVCache(struct vcache *avc, int *slept)
VN_UNLOCK(AFSTOV(avc));
#endif
AFS_RELE(AFSTOV(avc));
afs_stats_cmperf.vcacheXAllocs--;
} else {
if (afs_norefpanic) {
printf("flush vc refcnt < 1");
@ -621,54 +623,29 @@ afs_FlushReclaimedVcaches(void)
#endif
}
/*
* afs_NewVCache
*
* Description:
* This routine is responsible for allocating a new cache entry
* from the free list. It formats the cache entry and inserts it
* into the appropriate hash tables. It must be called with
* afs_xvcache write-locked so as to prevent several processes from
* trying to create a new cache entry simultaneously.
*
* Parameters:
* afid : The file id of the file whose cache entry is being
* created.
*/
/* LOCK: afs_NewVCache afs_xvcache W */
struct vcache *
afs_NewVCache(struct VenusFid *afid, struct server *serverp)
static int
afs_ShakeLooseVCaches(afs_int32 anumber)
{
struct vcache *tvc;
#if defined(AFS_OSF_ENV) || defined(AFS_LINUX22_ENV)
afs_int32 i, j;
afs_int32 anumber = VCACHE_FREE;
#ifdef AFS_AIX_ENV
struct gnode *gnodepnt;
#endif
#ifdef AFS_OSF_ENV
struct vcache *nvc;
#endif /* AFS_OSF_ENV */
struct vcache *tvc;
struct afs_q *tq, *uq;
int code, fv_slept;
afs_int32 target = anumber;
int haveGlock = 1;
AFS_STATCNT(afs_NewVCache);
/* Should probably deal better */
if (!ISAFS_GLOCK()) {
haveGlock = 0;
AFS_GLOCK();
}
afs_FlushReclaimedVcaches();
#if defined(AFS_OSF_ENV) || defined(AFS_LINUX22_ENV)
#if defined(AFS_OSF30_ENV) || defined(AFS_LINUX22_ENV)
if (afs_vcount >= afs_maxvcount)
#else
/*
* If we are using > 33 % of the total system vnodes for AFS vcache
* entries or we are using the maximum number of vcache entries,
* then free some. (if our usage is > 33% we should free some, if
* our usage is > afs_maxvcount, set elsewhere to 0.5*nvnode,
* we _must_ free some -- no choice).
*/
if (((3 * afs_vcount) > nvnode) || (afs_vcount >= afs_maxvcount))
if (
#ifdef AFS_MAXVCOUNT_ENV
afsd_dynamic_vcaches || /* Always run if dynamic vcaches are enabled. */
#endif
{
afs_vcount >= afs_maxvcount
) {
int i;
char *panicstr;
@ -678,7 +655,11 @@ afs_NewVCache(struct VenusFid *afid, struct server *serverp)
uq = QPrev(tq);
if (tvc->states & CVFlushed) {
refpanic("CVFlushed on VLRU");
} else if (i++ > afs_maxvcount) {
} else if (
#ifdef AFS_MAXVCOUNT_ENV
! afsd_dynamic_vcaches &&
#endif
i++ > afs_maxvcount) {
refpanic("Exceeded pool of AFS vnodes(VLRU cycle?)");
} else if (QNext(uq) != tq) {
refpanic("VLRU inconsistent");
@ -744,24 +725,48 @@ restart:
if (tq == uq)
break;
}
if (anumber == VCACHE_FREE) {
printf("afs_NewVCache: warning none freed, using %d of %d\n",
if (
#ifdef AFS_MAXVCOUNT_ENV
!afsd_dynamic_vcaches &&
#endif
anumber == target) {
printf("afs_ShakeLooseVCaches: warning none freed, using %d of %d\n",
afs_vcount, afs_maxvcount);
if (afs_vcount >= afs_maxvcount) {
printf("afs_NewVCache - none freed\n");
return NULL;
}
}
}
/*
printf("recycled %d entries\n", target-anumber);
*/
if (!haveGlock)
AFS_GUNLOCK();
#endif
return 0;
}
#if defined(AFS_LINUX22_ENV)
static struct vcache *
afs_AllocVCache(void)
{
struct vcache *tvc;
#if defined(AFS_OSF30_ENV)
struct vcache *nvc;
AFS_GUNLOCK();
if (getnewvnode(MOUNT_AFS, &Afs_vnodeops, &nvc)) {
/* What should we do ???? */
osi_Panic("afs_AllocVCache: no more vnodes");
}
AFS_GLOCK();
tvc = nvc;
tvc->nextfree = NULL;
afs_vcount++;
#elif defined(AFS_LINUX22_ENV)
struct inode *ip;
AFS_GUNLOCK();
ip = new_inode(afs_globalVFS);
if (!ip)
osi_Panic("afs_NewVCache: no more inodes");
osi_Panic("afs_AllocVCache: no more inodes");
AFS_GLOCK();
#if defined(STRUCT_SUPER_HAS_ALLOC_INODE)
tvc = VTOAFS(ip);
@ -770,19 +775,90 @@ restart:
ip->u.generic_ip = tvc;
tvc->v = ip;
#endif
}
#else
AFS_GUNLOCK();
if (getnewvnode(MOUNT_AFS, &Afs_vnodeops, &nvc)) {
/* What should we do ???? */
osi_Panic("afs_NewVCache: no more vnodes");
}
AFS_GLOCK();
tvc = nvc;
tvc->nextfree = NULL;
#endif
afs_vcount++;
#ifdef AFS_MAXVCOUNT_ENV
/* track the peak */
if (afsd_dynamic_vcaches && afs_maxvcount < afs_vcount) {
afs_maxvcount = afs_vcount;
printf("peak vnodes: %d\n", afs_maxvcount);
}
#endif
afs_stats_cmperf.vcacheXAllocs++; /* count in case we have a leak */
#else
/* none free, making one is better than a panic */
afs_stats_cmperf.vcacheXAllocs++; /* count in case we have a leak */
tvc = (struct vcache *)afs_osi_Alloc(sizeof(struct vcache));
#if defined(AFS_DARWIN_ENV) && !defined(UKERNEL)
tvc->v = NULL; /* important to clean this, or use memset 0 */
#endif
#ifdef KERNEL_HAVE_PIN
pin((char *)tvc, sizeof(struct vcache)); /* XXX */
#endif
#if defined(AFS_SGI_ENV)
{
char name[METER_NAMSZ];
memset(tvc, 0, sizeof(struct vcache));
tvc->v.v_number = ++afsvnumbers;
tvc->vc_rwlockid = OSI_NO_LOCKID;
initnsema(&tvc->vc_rwlock, 1,
makesname(name, "vrw", tvc->v.v_number));
#ifndef AFS_SGI53_ENV
initnsema(&tvc->v.v_sync, 0,
makesname(name, "vsy", tvc->v.v_number));
#endif
#ifndef AFS_SGI62_ENV
initnlock(&tvc->v.v_lock,
makesname(name, "vlk", tvc->v.v_number));
#endif
}
#endif /* AFS_SGI_ENV */
#endif
return tvc;
}
/*!
* This routine is responsible for allocating a new cache entry
* from the free list. It formats the cache entry and inserts it
* into the appropriate hash tables. It must be called with
* afs_xvcache write-locked so as to prevent several processes from
* trying to create a new cache entry simultaneously.
*
* LOCK: afs_NewVCache afs_xvcache W
*
* \param afid The file id of the file whose cache entry is being created.
*
* \return The new vcache struct.
*/
struct vcache *
afs_NewVCache(struct VenusFid *afid, struct server *serverp)
{
struct vcache *tvc;
afs_int32 i, j;
afs_int32 anumber = VCACHE_FREE;
#ifdef AFS_AIX_ENV
struct gnode *gnodepnt;
#endif
struct afs_q *tq, *uq;
int code, fv_slept;
AFS_STATCNT(afs_NewVCache);
afs_FlushReclaimedVcaches();
#if defined(AFS_OSF_ENV) || defined(AFS_LINUX22_ENV)
#ifdef AFS_MAXVCOUNT_ENV
if(!afsd_dynamic_vcaches) {
#endif
afs_ShakeLooseVCaches(anumber);
if (afs_vcount >= afs_maxvcount) {
printf("afs_NewVCache - none freed\n");
return NULL;
}
#ifdef AFS_MAXVCOUNT_ENV
}
#endif
tvc = afs_AllocVCache();
#else /* AFS_OSF_ENV */
/* pull out a free cache entry */
if (!freeVCList) {
@ -870,33 +946,7 @@ restart:
}
}
if (!freeVCList) {
/* none free, making one is better than a panic */
afs_stats_cmperf.vcacheXAllocs++; /* count in case we have a leak */
tvc = (struct vcache *)afs_osi_Alloc(sizeof(struct vcache));
#if defined(AFS_DARWIN_ENV) && !defined(UKERNEL)
tvc->v = NULL; /* important to clean this, or use memset 0 */
#endif
#ifdef KERNEL_HAVE_PIN
pin((char *)tvc, sizeof(struct vcache)); /* XXX */
#endif
#if defined(AFS_SGI_ENV)
{
char name[METER_NAMSZ];
memset(tvc, 0, sizeof(struct vcache));
tvc->v.v_number = ++afsvnumbers;
tvc->vc_rwlockid = OSI_NO_LOCKID;
initnsema(&tvc->vc_rwlock, 1,
makesname(name, "vrw", tvc->v.v_number));
#ifndef AFS_SGI53_ENV
initnsema(&tvc->v.v_sync, 0,
makesname(name, "vsy", tvc->v.v_number));
#endif
#ifndef AFS_SGI62_ENV
initnlock(&tvc->v.v_lock,
makesname(name, "vlk", tvc->v.v_number));
#endif
}
#endif /* AFS_SGI_ENV */
tvc = afs_AllocVCache();
} else {
tvc = freeVCList; /* take from free list */
freeVCList = tvc->nextfree;
@ -1769,7 +1819,7 @@ afs_GetVCache(register struct VenusFid *afid, struct vrequest *areq,
newvcache = 1;
ConvertWToSLock(&afs_xvcache);
if (!tvc)
if (tvc == NULL)
{
ReleaseSharedLock(&afs_xvcache);
return NULL;

View File

@ -32,6 +32,9 @@
* -nosettime Don't keep checking the time to avoid drift (default).
* -settime Keep checking the time to avoid drift.
* -verbose Be chatty.
* -disable-dynamic-vcaches Disable the use of -stat value as the starting size of
* the size of the vcache/stat cache pool,
* but increase that pool dynamically as needed.
* -debug Print out additional debugging info.
* -kerndev [OBSOLETE] The kernel device for AFS.
* -dontfork [OBSOLETE] Don't fork off as a new process.
@ -312,6 +315,7 @@ static int enable_nomount = 0; /* do not mount */
#ifdef notdef
static int inodes = 60; /* VERY conservative, but has to be */
#endif
int afsd_dynamic_vcaches = 0; /* Enable dynamic-vcache support */
int afsd_verbose = 0; /*Are we being chatty? */
int afsd_debug = 0; /*Are we printing debugging info? */
int afsd_CloseSynch = 0; /*Are closes synchronous or not? */
@ -1736,6 +1740,25 @@ mainproc(struct cmd_syndesc *as, void *arock)
}
}
if (as->parms[34].items) {
#ifdef AFS_MAXVCOUNT_ENV
/* -disable-dynamic-vcaches */
afsd_dynamic_vcaches = FALSE;
#else
printf("afsd: Error toggling flag, dynamically allocated vcaches not supported on your platform\n");
exit(1);
#endif
}
#ifdef AFS_MAXVCOUNT_ENV
else {
/* -dynamic-vcaches */
afsd_dynamic_vcaches = TRUE;
}
if (afsd_verbose)
printf("afsd: %s dynamically allocated vcaches\n", ( afsd_dynamic_vcaches ? "enabling" : "disabling" ));
#endif
/*
* Pull out all the configuration info for the workstation's AFS cache and
* the cellular community we're willing to let our users see.
@ -2073,6 +2096,7 @@ mainproc(struct cmd_syndesc *as, void *arock)
cparams.chunkSize = chunkSize;
cparams.setTimeFlag = cacheSetTime;
cparams.memCacheFlag = cacheFlags;
cparams.dynamic_vcaches = afsd_dynamic_vcaches;
#ifdef notdef
cparams.inodes = inodes;
#endif
@ -2445,6 +2469,7 @@ main(int argc, char **argv)
cmd_AddParm(ts, "-settime", CMD_FLAG, CMD_OPTIONAL,
"set the time");
cmd_AddParm(ts, "-rxpck", CMD_SINGLE, CMD_OPTIONAL, "set rx_extraPackets to this value");
cmd_AddParm(ts, "-disable-dynamic-vcaches", CMD_FLAG, CMD_OPTIONAL, "disable stat/vcache cache growing as needed");
return (cmd_Dispatch(argc, argv));
}

View File

@ -141,6 +141,7 @@ struct afs_cacheParams {
afs_int32 memCacheFlag;
afs_int32 inodes;
afs_int32 users;
afs_int32 dynamic_vcaches;
};
/*

View File

@ -28,6 +28,7 @@
#define AFS_64BIT_ENV 1 /* Defines afs_int32 as int, not long. */
#define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits. */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)
#ifdef CONFIG_SMP

View File

@ -30,6 +30,7 @@
#define AFS_64BIT_ENV 1 /* Defines afs_int32 as int, not long. */
#define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits. */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)
#ifdef CONFIG_SMP

View File

@ -33,7 +33,7 @@
#define AFS_64BIT_ENV 1
#define AFS_64BIT_CLIENT 1
#define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -39,6 +39,7 @@
#define AFS_64BIT_CLIENT 1
#define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits. */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -29,6 +29,7 @@
#define AFS_64BIT_ENV 1
#define AFS_64BIT_CLIENT 1
#define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -30,6 +30,7 @@
#define AFS_SYSCALL 137
#define AFS_64BIT_IOPS_ENV 1
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)
#ifdef CONFIG_SMP

View File

@ -25,6 +25,7 @@
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_64BIT_ENV 1
#define AFS_64BIT_CLIENT 1
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -27,6 +27,7 @@
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_64BIT_ENV 1
#define AFS_64BIT_CLIENT 1
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -32,6 +32,7 @@
#define AFS_SYSCALL 137
#define AFS_64BIT_IOPS_ENV 1
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)
#ifdef CONFIG_SMP

View File

@ -28,6 +28,7 @@
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_64BIT_ENV 1
#define AFS_64BIT_CLIENT 1
#define AFS_MAXVCOUNT_ENV 1
#ifdef AFS_LARGEFILE_ENV
#define _FILE_OFFSET_BITS 64

View File

@ -27,6 +27,7 @@
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_64BIT_ENV 1
#define AFS_64BIT_CLIENT 1
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -39,6 +39,7 @@
#define AFS_64BIT_CLIENT 1
#define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits. */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -41,6 +41,7 @@
#define AFS_64BIT_CLIENT 1
#define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits. */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)
#include <linux/init.h>

View File

@ -23,6 +23,7 @@
#define AFS_64BIT_CLIENT 1
#define AFS_64BIT_IOPS_ENV 1
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -27,6 +27,7 @@
#define AFS_64BIT_CLIENT 1
#define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits. */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -29,6 +29,7 @@
#define AFS_64BIT_CLIENT 1
#define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits. */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -21,6 +21,7 @@
#define AFS_SYSCALL 137
#define AFS_64BIT_IOPS_ENV 1
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)
#ifdef CONFIG_SMP

View File

@ -25,6 +25,7 @@
#define AFS_64BIT_CLIENT 1
#define AFS_64BIT_IOPS_ENV 1
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -27,6 +27,7 @@
#define AFS_64BIT_CLIENT 1
#define AFS_64BIT_IOPS_ENV 1
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -31,6 +31,7 @@
#define AFS_SYSCALL 137
#define AFS_64BIT_IOPS_ENV 1
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)
#ifdef CONFIG_SMP

View File

@ -35,6 +35,7 @@
#define AFS_64BIT_CLIENT 1
#define AFS_64BIT_IOPS_ENV 1
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -37,6 +37,7 @@
#define AFS_64BIT_CLIENT 1
#define AFS_64BIT_IOPS_ENV 1
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -40,6 +40,7 @@
#define AFS_64BIT_KERNEL 1
#define AFS_64BIT_IOPS_ENV 1
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -43,6 +43,7 @@
#define AFS_LINUX_64BIT_KERNEL 1
#define AFS_64BIT_IOPS_ENV 1
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -36,6 +36,7 @@
#define AFS_64BIT_ENV 1 /* Defines afs_int32 as int, not long. */
#define AFS_32BIT_USR_ENV 1 /* user level processes are 32bit */
#define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits. */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)
#ifdef CONFIG_SMP

View File

@ -39,6 +39,7 @@
#define AFS_64BIT_CLIENT 1
#define AFS_32BIT_USR_ENV 1
#define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits. */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -41,6 +41,7 @@
#define AFS_64BIT_CLIENT 1
#define AFS_32BIT_USR_ENV 1
#define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits. */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)

View File

@ -31,6 +31,7 @@
#define AFS_SYSCALL 227
#define AFS_64BIT_IOPS_ENV 1
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)
#ifdef CONFIG_SMP

View File

@ -34,6 +34,7 @@
#define AFS_64BIT_CLIENT 1
#define AFS_64BIT_IOPS_ENV 1
#define AFS_NAMEI_ENV 1 /* User space interface to file system */
#define AFS_MAXVCOUNT_ENV 1
#if defined(__KERNEL__) && !defined(KDUMP_KERNEL)