Support memcache sizes larger than 2GB.

This commit is contained in:
Nickolai Zeldovich 2002-12-27 03:51:51 +00:00
parent b8dbb6e0c9
commit 755686d45a
3 changed files with 8 additions and 3 deletions

View File

@ -3062,12 +3062,17 @@ void afs_dcacheInit(int afiles, int ablocks, int aDentries, int achunk,
/*
* Use a memory cache instead of a disk cache
*/
afs_int64 cachebytes;
cacheDiskType = AFS_FCACHE_TYPE_MEM;
afs_cacheType = &afs_MemCacheOps;
afiles = (afiles < aDentries) ? afiles : aDentries; /* min */
ablocks = afiles * (AFS_FIRSTCSIZE/1024);
/* ablocks is reported in 1K blocks */
code = afs_InitMemCache(afiles * AFS_FIRSTCSIZE, AFS_FIRSTCSIZE, aflags);
cachebytes = afiles;
cachebytes *= AFS_FIRSTCSIZE;
code = afs_InitMemCache(cachebytes, AFS_FIRSTCSIZE, aflags);
if (code != 0) {
printf("afsd: memory cache too large for available memory.\n");
printf("afsd: AFS files cannot be accessed.\n\n");

View File

@ -34,7 +34,7 @@ static int memAllocMaySleep = 0;
extern int cacheDiskType;
int afs_InitMemCache(int size, int blkSize, int flags)
int afs_InitMemCache(afs_int64 size, int blkSize, int flags)
{
int index;

View File

@ -352,7 +352,7 @@ extern void shutdown_mariner(void);
/* afs_memcache.c */
extern int afs_InitMemCache(int size, int blkSize, int flags);
extern int afs_InitMemCache(afs_int64 size, int blkSize, int flags);
extern int afs_MemCacheClose(char *file);
extern void *afs_MemCacheOpen(ino_t blkno);
extern int afs_MemReadBlk(register struct memCacheEntry *mceP, int offset, char *dest, int size);