Package: openafs
Version: 1.4.0-4
Hi,
We noticed a problem with openafs 1.4. Basically, when you have a large
cache size, and leave afs.conf at the defaults, afsd hangs during startup.
For example, if you have /var/cache/openafs on a separate partition (say
100gb partition), and have "/afs:/var/cache/openafs:80000000" in your
/etc/openafs/cacheinfo, when openafs-client runs, afs's cachetrim
process will consume 100% cpu and loop endlessly (and /afs will be
unusable).
The problem is that internally, the cache size is represented in an
afs_int32 (representing 1k blocks). Use that in 32bit math, and it
quickly overflows.
For example, in src/afs/afs.h:
extern afs_int32 afs_cacheBlocks; /*1K blocks in cache */
#define CM_DCACHECOUNTFREEPCT 95 /* max pct of chunks in use */
#define afs_CacheIsTooFull() \
(afs_blocksUsed - afs_blocksDiscarded > \
(CM_DCACHECOUNTFREEPCT*afs_cacheBlocks)/100 || \
afs_freeDCCount - afs_discardDCCount < \
((100-CM_DCACHECOUNTFREEPCT)*afs_cacheFiles)/100)
(95*afs_cacheBlocks) will overflow a 32bit integer; thus this
computation becomes meaningless when dealing w/ large caches.
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]