Support memcache sizes larger than 2GB.
authorNickolai Zeldovich <kolya@mit.edu>
Fri, 27 Dec 2002 03:51:51 +0000 (03:51 +0000)
committerNickolai Zeldovich <kolya@mit.edu>
Fri, 27 Dec 2002 03:51:51 +0000 (03:51 +0000)
src/afs/afs_dcache.c
src/afs/afs_memcache.c
src/afs/afs_prototypes.h

index 2636c74..addeb22 100644 (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");
index b010432..a94c8d4 100644 (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;
 
index 3caf48b..cf96576 100644 (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);