Re: [PATCH 6/8] dcache: use lockref_init for d_lockref

Dave Chinner
2025-01-15T20:13:27Z

On Wed, Jan 15, 2025 at 10:46:42AM +0100, Christoph Hellwig wrote:
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> fs/dcache.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/fs/dcache.c b/fs/dcache.c
> index b4d5e9e1e43d..1a01d7a6a7a9 100644
> --- a/fs/dcache.c
> +++ b/fs/dcache.c
> @@ -1681,9 +1681,8 @@ static struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name)
> /* Make sure we always see the terminating NUL character */
> smp_store_release(&dentry->d_name.name, dname); /* ^^^ */
>
> - dentry->d_lockref.count = 1;
> dentry->d_flags = 0;
> - spin_lock_init(&dentry->d_lock);

Looks wrong - dentry->d_lock is not part of dentry->d_lockref...

-Dave.

> + lockref_init(&dentry->d_lockref, 1);
> seqcount_spinlock_init(&dentry->d_seq, &dentry->d_lock);
> dentry->d_inode = NULL;
> dentry->d_parent = dentry;
> --
> 2.45.2
>
>
>

--
Dave Chinner
david@fromorbit.com