Re: [PATCH] vfs: Add a sysctl for automated deletion of dentry

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 13, 2024 at 4:32 PM Yafang Shao <laoar.shao@xxxxxxxxx> wrote:
>
> Commit 681ce8623567 ("vfs: Delete the associated dentry when deleting a
> file") introduced an unconditional deletion of the associated dentry when a
> file is removed. However, this led to performance regressions in specific
> benchmarks, such as ilebench.sum_operations/s [0], prompting a revert in
> commit 4a4be1ad3a6e ("Revert "vfs: Delete the associated dentry when
> deleting a file"").
>
> This patch seeks to reintroduce the concept conditionally, where the
> associated dentry is deleted only when the user explicitly opts for it
> during file removal. A new sysctl fs.automated_deletion_of_dentry is
> added for this purpose. Its default value is set to 0.
>
> There are practical use cases for this proactive dentry reclamation.
> Besides the Elasticsearch use case mentioned in commit 681ce8623567,
> additional examples have surfaced in our production environment. For
> instance, in video rendering services that continuously generate temporary
> files, upload them to persistent storage servers, and then delete them, a
> large number of negative dentries—serving no useful purpose—accumulate.
> Users in such cases would benefit from proactively reclaiming these
> negative dentries.
>
> Link: https://lore.kernel.org/linux-fsdevel/202405291318.4dfbb352-oliver.sang@xxxxxxxxx [0]
> Link: https://lore.kernel.org/all/20240912-programm-umgibt-a1145fa73bb6@brauner/
> Suggested-by: Christian Brauner <brauner@xxxxxxxxxx>
> Signed-off-by: Yafang Shao <laoar.shao@xxxxxxxxx>
> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
> Cc: Christian Brauner <brauner@xxxxxxxxxx>
> Cc: Jan Kara <jack@xxxxxxx>
> Cc: Mateusz Guzik <mjguzik@xxxxxxxxx>
> ---
>  fs/dcache.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>
> diff --git a/fs/dcache.c b/fs/dcache.c
> index 3d8daaecb6d1..ffd2cae2ba8d 100644
> --- a/fs/dcache.c
> +++ b/fs/dcache.c
> @@ -130,6 +130,7 @@ struct dentry_stat_t {
>  static DEFINE_PER_CPU(long, nr_dentry);
>  static DEFINE_PER_CPU(long, nr_dentry_unused);
>  static DEFINE_PER_CPU(long, nr_dentry_negative);
> +static int automated_deletion_of_dentry;
>
>  #if defined(CONFIG_SYSCTL) && defined(CONFIG_PROC_FS)
>  /* Statistics gathering. */
> @@ -194,6 +195,15 @@ static struct ctl_table fs_dcache_sysctls[] = {
>                 .mode           = 0444,
>                 .proc_handler   = proc_nr_dentry,
>         },
> +       {
> +               .procname       = "automated_deletion_of_dentry",
> +               .data           = &automated_deletion_of_dentry,
> +               .maxlen         = sizeof(automated_deletion_of_dentry),
> +               .mode           = 0644,
> +               .proc_handler   = proc_dointvec_minmax,
> +               .extra1         = SYSCTL_ZERO,
> +               .extra2         = SYSCTL_ONE,
> +       },
>  };
>
>  static int __init init_fs_dcache_sysctls(void)
> @@ -2394,6 +2404,8 @@ void d_delete(struct dentry * dentry)
>          * Are we the only user?
>          */
>         if (dentry->d_lockref.count == 1) {
> +               if (automated_deletion_of_dentry)
> +                       __d_drop(dentry);
>                 dentry->d_flags &= ~DCACHE_CANT_MOUNT;
>                 dentry_unlink_inode(dentry);
>         } else {
> --
> 2.43.5
>

Gently ping.  Any feedback on this change?

--
Regards
Yafang





[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux