Whamcloud - gitweb
LU-3409 llite: silence lockdep warning in ll_md_blocking_ast
[fs/lustre-release.git] / lustre / llite / llite_internal.h
index d150bb6..daaa371 100644 (file)
@@ -1585,13 +1585,14 @@ static inline void __d_lustre_invalidate(struct dentry *dentry)
  * ll_md_blocking_ast), unhash this dentry, and let dcache to reclaim it later;
  * else dput() of the last refcount will unhash this dentry and kill it.
  */
  * ll_md_blocking_ast), unhash this dentry, and let dcache to reclaim it later;
  * else dput() of the last refcount will unhash this dentry and kill it.
  */
-static inline void d_lustre_invalidate(struct dentry *dentry)
+static inline void d_lustre_invalidate(struct dentry *dentry, int nested)
 {
        CDEBUG(D_DENTRY, "invalidate dentry %.*s (%p) parent %p inode %p "
               "refc %d\n", dentry->d_name.len, dentry->d_name.name, dentry,
               dentry->d_parent, dentry->d_inode, d_refcount(dentry));
 
 {
        CDEBUG(D_DENTRY, "invalidate dentry %.*s (%p) parent %p inode %p "
               "refc %d\n", dentry->d_name.len, dentry->d_name.name, dentry,
               dentry->d_parent, dentry->d_inode, d_refcount(dentry));
 
-       spin_lock(&dentry->d_lock);
+       spin_lock_nested(&dentry->d_lock,
+                        nested ? DENTRY_D_LOCK_NESTED : DENTRY_D_LOCK_NORMAL);
        __d_lustre_invalidate(dentry);
        if (d_refcount(dentry) == 0)
                __d_drop(dentry);
        __d_lustre_invalidate(dentry);
        if (d_refcount(dentry) == 0)
                __d_drop(dentry);