svn commit: r364080 - head/sys/kern
Mateusz Guzik
mjg at FreeBSD.org
Mon Aug 10 12:28:57 UTC 2020
Author: mjg
Date: Mon Aug 10 12:28:56 2020
New Revision: 364080
URL: https://svnweb.freebsd.org/changeset/base/364080
Log:
cache: let SAVESTART passthrough
The flag is only passed for non-LOOKUP ops and those fallback to the slowpath.
Modified:
head/sys/kern/vfs_cache.c
Modified: head/sys/kern/vfs_cache.c
==============================================================================
--- head/sys/kern/vfs_cache.c Mon Aug 10 12:05:55 2020 (r364079)
+++ head/sys/kern/vfs_cache.c Mon Aug 10 12:28:56 2020 (r364080)
@@ -3146,7 +3146,7 @@ cache_fpl_handled_impl(struct cache_fpl *fpl, int erro
#define CACHE_FPL_SUPPORTED_CN_FLAGS \
(LOCKLEAF | LOCKPARENT | WANTPARENT | NOCACHE | FOLLOW | LOCKSHARED | SAVENAME | \
- WILLBEDIR | ISOPEN | NOMACCHECK | AUDITVNODE1 | AUDITVNODE2)
+ SAVESTART | WILLBEDIR | ISOPEN | NOMACCHECK | AUDITVNODE1 | AUDITVNODE2)
#define CACHE_FPL_INTERNAL_CN_FLAGS \
(ISDOTDOT | MAKEENTRY | ISLASTCN)
@@ -3654,7 +3654,7 @@ cache_fplookup_next(struct cache_fpl *fpl)
/*
* If they want to create an entry we need to replace this one.
*/
- if (__predict_false(fpl->cnp->cn_nameiop == CREATE)) {
+ if (__predict_false(fpl->cnp->cn_nameiop != LOOKUP)) {
return (cache_fpl_partial(fpl));
}
negstate = NCP2NEGSTATE(ncp);
@@ -4125,6 +4125,9 @@ cache_fplookup(struct nameidata *ndp, enum cache_fpl_s
fpl.ndp = ndp;
fpl.cnp = &ndp->ni_cnd;
MPASS(curthread == fpl.cnp->cn_thread);
+
+ if ((fpl.cnp->cn_flags & SAVESTART) != 0)
+ MPASS(fpl.cnp->cn_nameiop != LOOKUP);
if (!cache_can_fplookup(&fpl)) {
SDT_PROBE3(vfs, fplookup, lookup, done, ndp, fpl.line, fpl.status);
More information about the svn-src-all
mailing list