dcache questions

Gordon Chaffee (chaffee@quimby.cs.berkeley.edu)
Tue, 30 Dec 1997 04:25:37 -0800 (PST)


I'm having some significant problems trying to get the vfat filesystem
to work properly with the dcache. Basically, the problem is caused by
the vfat filename handling. For each long filename, there is an alias
that refers to the same file or directory. For example, for the filename
LongFileName, there is an alias called longfi~1.

For a directory tree, I could have something like:
Long: Program Files/GNU Emacs/LongFileName.exe
Alias: progra~1/gnuema~1/longfi~1.exe

One can also refer to LongFileName.exe via one of any combination of
aliased directory names:
progra~1/GNU Emacs/LongFileName.exe
Program Files/gnuema~1/longfi~1.exe

This really starts messing with the dcache since there is not a unique
dentry for any filename or directory.

I decided I would try to handle the problem with aliases by not putting
any dentries in the dcache for filenames that are aliases or for filenames
that haven't been found. This way, there would only be one dentry per
directory and file.

I can't even get the simplest case to work. I tried changing vfat_lookup()
to not call d_add(dentry, NULL) when a filename is not found, but this
causes the dcache to think there is a permanent error with this filename.

Is there some way I can either get the dcache to not cache errors?

Does someone have a suggestion of another way to handle these aliases?

- Gordon