git: a098a831a162 - main - cache: tidy up handling of foo/bar lookups where foo is not a directory

Mateusz Guzik mjg at FreeBSD.org
Tue Jan 26 20:43:46 UTC 2021


The branch main has been updated by mjg:

URL: https://cgit.FreeBSD.org/src/commit/?id=a098a831a162fcd55b0097c95e6840621d8c720a

commit a098a831a162fcd55b0097c95e6840621d8c720a
Author:     Mateusz Guzik <mjg at FreeBSD.org>
AuthorDate: 2021-01-26 16:19:12 +0000
Commit:     Mateusz Guzik <mjg at FreeBSD.org>
CommitDate: 2021-01-26 20:42:53 +0000

    cache: tidy up handling of foo/bar lookups where foo is not a directory
    
    The code was performing an avoidable check for doomed state to account
    for foo being a VDIR but turning VBAD. Now that dooming puts a vnode
    in a permanent "modify" state this is no longer necessary as the final
    status check will catch it.
---
 sys/kern/vfs_cache.c | 15 +++------------
 1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c
index 4e2cfa9edf53..b759affcc0ac 100644
--- a/sys/kern/vfs_cache.c
+++ b/sys/kern/vfs_cache.c
@@ -5328,20 +5328,11 @@ cache_fplookup_failed_vexec(struct cache_fpl *fpl, int error)
 	}
 
 	/*
-	 * Hack: they may be looking up foo/bar, where foo is a
-	 * regular file. In such a case we need to turn ENOTDIR,
-	 * but we may happen to get here with a different error.
+	 * Hack: they may be looking up foo/bar, where foo is not a directory.
+	 * In such a case we need to return ENOTDIR, but we may happen to get
+	 * here with a different error.
 	 */
 	if (dvp->v_type != VDIR) {
-		/*
-		 * The check here is predominantly to catch
-		 * EOPNOTSUPP from dead_vnodeops. If the vnode
-		 * gets doomed past this point it is going to
-		 * fail seqc verification.
-		 */
-		if (VN_IS_DOOMED(dvp)) {
-			return (cache_fpl_aborted(fpl));
-		}
 		error = ENOTDIR;
 	}
 


More information about the dev-commits-src-all mailing list