Subject: Re: cache_*() case-insensitive searching
To: Jaromir Dolecek <dolecek@ics.muni.cz>
From: Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>
List: tech-kern
Date: 08/08/1999 08:29:47
> > Also, cache_lookup uses a hash table; it's somewhat hard to fold a
> > case-insensitive string compare into that as you'd be looking in the
> > wrong hash bucket most of the time.
>
> If I rean the code correctly, the hash is over the directory vnode
> capability number, so that it shouldn't affect case-[in]sensitivness
> of the search.
No.
The hash bucket is selected via:
ncpp = &nchashtbl[(cnp->cn_hash ^ dvp->v_id) & nchash];
(see vfs_cache.c)
cnp->cn_hash is computed in vfs_lookup.c from the pathname component:
cnp->cn_hash = 0;
for (cp = cnp->cn_nameptr; *cp != '\0' && *cp != '/'; cp++)
cnp->cn_hash += (unsigned char)*cp;
> Monocase fs in tree is filecorefs only, right ?
Not the only one; for example, the MS-DOS filesystem without the win95
extensions for long filenames is case-insensitive..
- Bill