From owner-dev-commits-src-all@freebsd.org Fri Jan 1 00:11:53 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1A1704D5F4F; Fri, 1 Jan 2021 00:11:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4D6QS904KJz4bYJ; Fri, 1 Jan 2021 00:11:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E81DE19912; Fri, 1 Jan 2021 00:11:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 1010Bqgb005790; Fri, 1 Jan 2021 00:11:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1010BqMx005789; Fri, 1 Jan 2021 00:11:52 GMT (envelope-from git) Date: Fri, 1 Jan 2021 00:11:52 GMT Message-Id: <202101010011.1010BqMx005789@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mateusz Guzik Subject: git: 6fe7de1a250b - main - cache: refactor cache_fpl_handle_root to fit the rest of the code better MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mjg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6fe7de1a250bb497ca1a3e1d979ae21c2149c2ea Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jan 2021 00:11:53 -0000 The branch main has been updated by mjg: URL: https://cgit.FreeBSD.org/src/commit/?id=6fe7de1a250bb497ca1a3e1d979ae21c2149c2ea commit 6fe7de1a250bb497ca1a3e1d979ae21c2149c2ea Author: Mateusz Guzik AuthorDate: 2020-12-28 09:25:01 +0000 Commit: Mateusz Guzik CommitDate: 2021-01-01 00:10:43 +0000 cache: refactor cache_fpl_handle_root to fit the rest of the code better Tested by: pho --- sys/kern/vfs_cache.c | 55 +++++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c index 22a5b54b2805..49fabc47884d 100644 --- a/sys/kern/vfs_cache.c +++ b/sys/kern/vfs_cache.c @@ -3562,31 +3562,6 @@ SYSCTL_BOOL(_vfs, OID_AUTO, cache_fast_lookup, CTLFLAG_RW, #define CACHE_FPL_FAILED -2020 -static void -cache_fpl_cleanup_cnp(struct componentname *cnp) -{ - - uma_zfree(namei_zone, cnp->cn_pnbuf); -#ifdef DIAGNOSTIC - cnp->cn_pnbuf = NULL; - cnp->cn_nameptr = NULL; -#endif -} - -static void -cache_fpl_handle_root(struct nameidata *ndp, struct vnode **dpp) -{ - struct componentname *cnp; - - cnp = &ndp->ni_cnd; - while (*(cnp->cn_nameptr) == '/') { - cnp->cn_nameptr++; - ndp->ni_pathlen--; - } - - *dpp = ndp->ni_rootdir; -} - /* * Components of nameidata (or objects it can point to) which may * need restoring in case fast path lookup fails. @@ -3613,6 +3588,34 @@ struct cache_fpl { bool fsearch; }; +static void +cache_fpl_cleanup_cnp(struct componentname *cnp) +{ + + uma_zfree(namei_zone, cnp->cn_pnbuf); +#ifdef DIAGNOSTIC + cnp->cn_pnbuf = NULL; + cnp->cn_nameptr = NULL; +#endif +} + +static struct vnode * +cache_fpl_handle_root(struct cache_fpl *fpl) +{ + struct nameidata *ndp; + struct componentname *cnp; + + ndp = fpl->ndp; + cnp = fpl->cnp; + + while (*(cnp->cn_nameptr) == '/') { + cnp->cn_nameptr++; + ndp->ni_pathlen--; + } + + return (ndp->ni_rootdir); +} + static void cache_fpl_checkpoint(struct cache_fpl *fpl, struct nameidata_saved *snd) { @@ -5174,7 +5177,7 @@ cache_fplookup(struct nameidata *ndp, enum cache_fpl_status *status, cnp = fpl.cnp; cnp->cn_nameptr = cnp->cn_pnbuf; if (cnp->cn_pnbuf[0] == '/') { - cache_fpl_handle_root(ndp, &dvp); + dvp = cache_fpl_handle_root(&fpl); ndp->ni_resflags |= NIRES_ABS; } else { if (ndp->ni_dirfd == AT_FDCWD) {