Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Oct 1995 14:56:32 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        bde@zeta.org.au, terry@lambert.org
Cc:        current@freebsd.org
Subject:   Re: lstat flushes namei cache entry
Message-ID:  <199510170456.OAA25759@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>> My change is only supposed to reenable the caching for lstat().  lstat()
>> is the only LOOKUP case where wantparent is nonzero (unless I've missed
>> a case).  Thus my change should be a no-op for everything except lstat().

>rename, nfs_rename (both disallowed because the DELETE op).
>lstat/olstat (both allowed because of the LOOKUP op).

Note: previously, lstat() of fee/xx removed any existing cache entry for
xx, independent of whether xx is a symlink.  This is what I'm fixing.
If xx is a symlink, then it should still be cached.  Symlinks aren't
followed for lstat() so there is now danger that for xx -> foo/bar,
bar is cached as a directory entry for fee.

>Mount on nullfs, union, umapfs (all incorrectly enter because of the LOOKUP
>op and the FOLLOW flag being set).

Those file systems are broken anyway :-).  I think the correct fix is to
set NOCACHE for these calls and also for the DELETE calls, and delete
the special cases, but I'm concerned about why it isn't already done.
NOCACHE seems to be set only for RENAME.

BTW, getdirentries() is currently broken for nfs-mounted msdosfs.  Is it
time for another sermon on the evil cookies? :-)

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199510170456.OAA25759>