git: 02ec31bdf60f - main - cache: add back target entry on rename
Oliver Pinter
oliver.pntr at gmail.com
Sat Jan 23 20:21:09 UTC 2021
On Saturday, January 23, 2021, Mateusz Guzik <mjg at freebsd.org> wrote:
> The branch main has been updated by mjg:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=
> 02ec31bdf60fa3a8530544cb3c8c4ec1df6cde0d
>
> commit 02ec31bdf60fa3a8530544cb3c8c4ec1df6cde0d
> Author: Mateusz Guzik <mjg at FreeBSD.org>
> AuthorDate: 2021-01-23 17:21:42 +0000
> Commit: Mateusz Guzik <mjg at FreeBSD.org>
> CommitDate: 2021-01-23 18:10:16 +0000
>
> cache: add back target entry on rename
> ---
> sys/kern/vfs_cache.c | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c
> index 770c8ebf061b..03bafc75acaa 100644
> --- a/sys/kern/vfs_cache.c
> +++ b/sys/kern/vfs_cache.c
> @@ -367,6 +367,10 @@ static bool __read_frequently cache_fast_revlookup =
> true;
> SYSCTL_BOOL(_vfs, OID_AUTO, cache_fast_revlookup, CTLFLAG_RW,
> &cache_fast_revlookup, 0, "");
>
> +static bool __read_mostly cache_rename_add = true;
> +SYSCTL_BOOL(_vfs, OID_AUTO, cache_rename_add, CTLFLAG_RW,
> + &cache_rename_add, 0, "");
It would be really if the description were filled with proper info.
+
> static u_int __exclusive_cache_line neg_cycle;
>
> #define ncneghash 3
> @@ -2731,6 +2735,21 @@ cache_vop_rename(struct vnode *fdvp, struct vnode
> *fvp, struct vnode *tdvp,
> } else {
> cache_remove_cnp(tdvp, tcnp);
> }
> +
> + /*
> + * TODO
> + *
> + * Historically renaming was always purging all revelang entries,
> + * but that's quite wasteful. In particular turns out that in many
> cases
> + * the target file is immediately accessed after rename, inducing
> a cache
> + * miss.
> + *
> + * Recode this to reduce relocking and reuse the existing entry
> (if any)
> + * instead of just removing it above and allocating a new one here.
> + */
> + if (cache_rename_add) {
> + cache_enter(tdvp, fvp, tcnp);
> + }
> }
>
> void
> _______________________________________________
> dev-commits-src-all at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all
> To unsubscribe, send any mail to "dev-commits-src-all-
> unsubscribe at freebsd.org"
>
More information about the dev-commits-src-all
mailing list