Subject: Re: cache_*() case-insensitive searching
To: None <dolecek@ics.muni.cz, tech-kern@netbsd.org,>
From: Ignatios Souvatzis <ignatios@cs.uni-bonn.de>
List: tech-kern
Date: 08/10/1999 13:11:26
On Tue, Aug 10, 1999 at 12:58:08PM +0300, Jaromir Dolecek wrote:
> Ignatios Souvatzis wrote:
> > You can't do this (case-insensitiveness) file system independent.
>
> Yeah, I know. I'm not talking about making the search FS-I,
> just thinking about how to provide a way for fs's code
> to do case-independant search in the cache.
>
> The problem is, that the hash value is counted before the fs code is
> able to touch the name to be searched for. If the name passed
> to lookup() is not the same as the the canonified one, we end up
> looking into wrong hash bucket in cache_lookup() and it's very
> likely the entry won't be found.
>
> If we would leave the counting of cnp->cn_hash in lookup() (as it's
> currently), we have to provide a hook for fs code
> to supply "canonified" name for the name we are currently doing
> the lookup for or the fs code would be forced to recount
> the hash value before calling cache_lookup(). I like neither of
> those two possibilities.
>
> If the hash value would be counted in cache_lookup() directly,
> fs code can do whatever it wants to canonify the filename
> and the hash value would be counted for the right name. Furthermore,
> the hash will be counted only when it would actually be used -- not
> such a bit optimization, but every bit counts :)
I am not familiar with the code you're proposing to change...
you sure what you want to do works for filesystems that are
- case insensitive but
- case preserving?
(that is, you need to store the original data on the disk, and provide them
to the reader, but use the canonicalized for searching operations).
(ADOSfs and OS-9 come to my mind.)
Regards,
-is
--
* Progress (n.): The process through which Usenet has evolved from
smart people in front of dumb terminals to dumb people in front of
smart terminals. -- obs@burnout.demon.co.uk (obscurity)