Whamcloud - gitweb
LU-10934 llite: integrate statx() API with Lustre
[fs/lustre-release.git] / lustre / llite / dcache.c
index d8ed9d4..a02055f 100644 (file)
@@ -60,11 +60,6 @@ static void ll_release(struct dentry *de)
         if (lld == NULL) /* NFS copies the de->d_op methods (bug 4655) */
                 RETURN_EXIT;
 
-        if (lld->lld_it) {
-                ll_intent_release(lld->lld_it);
-                OBD_FREE(lld->lld_it, sizeof(*lld->lld_it));
-        }
-
        de->d_fsdata = NULL;
        call_rcu(&lld->lld_rcu_head, free_dentry_data);
 
@@ -132,9 +127,9 @@ static int ll_ddelete(const struct dentry *de)
        ENTRY;
        LASSERT(de);
 
-       CDEBUG(D_DENTRY, "%s dentry %.*s (%p, parent %p, inode %p) %s%s\n",
+       CDEBUG(D_DENTRY, "%s dentry %pd (%p, parent %p, inode %p) %s%s\n",
               d_lustre_invalid((struct dentry *)de) ? "deleting" : "keeping",
-              de->d_name.len, de->d_name.name, de, de->d_parent, de->d_inode,
+              de, de, de->d_parent, de->d_inode,
               d_unhashed((struct dentry *)de) ? "" : "hashed,",
               list_empty(&de->d_subdirs) ? "" : "subdirs");
 
@@ -151,9 +146,9 @@ int ll_d_init(struct dentry *de)
        ENTRY;
        LASSERT(de != NULL);
 
-       CDEBUG(D_DENTRY, "ldd on dentry %.*s (%p) parent %p inode %p refc %d\n",
-               de->d_name.len, de->d_name.name, de, de->d_parent, de->d_inode,
-               ll_d_count(de));
+       CDEBUG(D_DENTRY, "ldd on dentry %pd (%p) parent %p inode %p refc %d\n",
+              de, de, de->d_parent, de->d_inode,
+              ll_d_count(de));
 
        if (de->d_fsdata == NULL) {
                struct ll_dentry_data *lld;
@@ -194,8 +189,9 @@ void ll_intent_drop_lock(struct lookup_intent *it)
                if (it->it_remote_lock_mode != 0) {
                        handle.cookie = it->it_remote_lock_handle;
 
-                       CDEBUG(D_DLMTRACE, "releasing remote lock with cookie"
-                              "%#llx from it %p\n", handle.cookie, it);
+                       CDEBUG(D_DLMTRACE,
+                              "releasing remote lock with cookie %#llx from it %p\n",
+                              handle.cookie, it);
                        ldlm_lock_decref(&handle,
                                         it->it_remote_lock_mode);
                        it->it_remote_lock_mode = 0;
@@ -224,7 +220,6 @@ void ll_intent_release(struct lookup_intent *it)
 void ll_invalidate_aliases(struct inode *inode)
 {
        struct dentry *dentry;
-       DECLARE_LL_D_HLIST_NODE_PTR(p);
        ENTRY;
 
        LASSERT(inode != NULL);
@@ -233,10 +228,10 @@ void ll_invalidate_aliases(struct inode *inode)
               PFID(ll_inode2fid(inode)), inode);
 
        spin_lock(&inode->i_lock);
-       ll_d_hlist_for_each_entry(dentry, p, &inode->i_dentry) {
-               CDEBUG(D_DENTRY, "dentry in drop %.*s (%p) parent %p "
-                      "inode %p flags %d\n", dentry->d_name.len,
-                      dentry->d_name.name, dentry, dentry->d_parent,
+       hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
+               CDEBUG(D_DENTRY,
+                      "dentry in drop %pd (%p) parent %p inode %p flags %d\n",
+                      dentry, dentry, dentry->d_parent,
                       dentry->d_inode, dentry->d_flags);
 
                d_lustre_invalidate(dentry, 0);
@@ -292,6 +287,9 @@ static int ll_revalidate_dentry(struct dentry *dentry,
 {
        struct inode *dir = dentry->d_parent->d_inode;
 
+       CDEBUG(D_VFSTRACE, "VFS Op:name=%s, flags=%u\n",
+              dentry->d_name.name, lookup_flags);
+
        /* If this is intermediate component path lookup and we were able to get
         * to this dentry, then its lock has not been revoked and the
         * path component is valid. */
@@ -319,49 +317,13 @@ static int ll_revalidate_dentry(struct dentry *dentry,
                return -ECHILD;
 
        if (dentry_may_statahead(dir, dentry))
-               ll_statahead(dir, &dentry, dentry->d_inode == NULL);
+               ll_revalidate_statahead(dir, &dentry, dentry->d_inode == NULL);
 
        return 1;
 }
 
-/*
- * Always trust cached dentries. Update statahead window if necessary.
- */
-#ifdef HAVE_IOP_ATOMIC_OPEN
-static int ll_revalidate_nd(struct dentry *dentry, unsigned int flags)
-{
-       int rc;
-       ENTRY;
-
-       CDEBUG(D_VFSTRACE, "VFS Op:name=%s, flags=%u\n",
-              dentry->d_name.name, flags);
-
-       rc = ll_revalidate_dentry(dentry, flags);
-       RETURN(rc);
-}
-#else
-static int ll_revalidate_nd(struct dentry *dentry, struct nameidata *nd)
-{
-       int rc;
-       ENTRY;
-
-       /*
-        * this is normally called from NFS export, and we don't know whether
-        * this is the last component.
-        */
-       if (nd == NULL)
-               RETURN(1);
-
-       CDEBUG(D_VFSTRACE, "VFS Op:name=%s, flags=%u\n",
-              dentry->d_name.name, nd->flags);
-
-       rc = ll_revalidate_dentry(dentry, nd->flags);
-       RETURN(rc);
-}
-#endif
-
 const struct dentry_operations ll_d_ops = {
-        .d_revalidate = ll_revalidate_nd,
+       .d_revalidate   = ll_revalidate_dentry,
         .d_release = ll_release,
         .d_delete  = ll_ddelete,
         .d_compare = ll_dcompare,