mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Disable negative name caching for msdosfs to work around a bug.
Since the name cache is case-sensitive and msdosfs isn't, creating a file 'foo' won't invalidate a negative entry for 'FOO'. There are similar problems related to 8.3 filenames. A better solution is to override VOP_LOOKUP with a method that canonicalizes the name, then calls vfs_cache_lookup(). Unfortunately, it's not quite that simple because vfs_cache_lookup() will call msdosfs_lookup() on a cache miss, and msdosfs_lookup() needs a way to get at the original component name.
This commit is contained in:
parent
02b47ea204
commit
23e8fcaf66
1 changed files with 7 additions and 0 deletions
|
|
@ -380,11 +380,18 @@ notfound:
|
|||
cnp->cn_flags |= SAVENAME;
|
||||
return (EJUSTRETURN);
|
||||
}
|
||||
#if 0
|
||||
/*
|
||||
* Insert name into cache (as non-existent) if appropriate.
|
||||
*
|
||||
* XXX Negative caching is broken for msdosfs because the name
|
||||
* cache doesn't understand peculiarities such as case insensitivity
|
||||
* and 8.3 filenames. Hence, it may not invalidate all negative
|
||||
* entries if a file with this name is later created.
|
||||
*/
|
||||
if ((cnp->cn_flags & MAKEENTRY) && nameiop != CREATE)
|
||||
cache_enter(vdp, *vpp, cnp);
|
||||
#endif
|
||||
return (ENOENT);
|
||||
|
||||
found:
|
||||
|
|
|
|||
Loading…
Reference in a new issue