On Fri, Feb 16, 2018 at 04:09:32PM +0100, John Ogness wrote:
> +static bool dentry_lock_inode(struct dentry *dentry)
> +{
> +     struct inode *inode = dentry->d_inode;
> +
> +     lockdep_assert_held(&dentry->d_lock);
> +
> +     if (unlikely(!spin_trylock(&inode->i_lock))) {

        if (likely(spin_trylock(&inode->i_lock)))
                return true;

and then unindent by 1 stop the below code:

> +             rcu_read_lock();
> +             spin_unlock(&dentry->d_lock);
> +             spin_lock(&inode->i_lock);
> +             spin_lock(&dentry->d_lock);
> +             rcu_read_unlock();
> +
> +             /*
> +              * @dentry->d_inode might have changed after dropping
> +              * @dentry->d_lock. If so, release @inode->i_lock and
> +              * signal the caller to restart the operation.
> +              */
> +             if (unlikely(inode != dentry->d_inode)) {
> +                     spin_unlock(&inode->i_lock);
> +                     return false;
> +             }
> +     }
> +     return true;
> +}

Reply via email to