]> err.no Git - linux-2.6/blobdiff - fs/ocfs2/dcache.c
[PATCH] Copy i_flags to ocfs2 inode flags on write
[linux-2.6] / fs / ocfs2 / dcache.c
index 18a31906316e2d99b9cd7c7800ab7e5f3ba24d2c..014e73978dac074aa406f4494f9e6288515a88a3 100644 (file)
@@ -183,9 +183,6 @@ DEFINE_SPINLOCK(dentry_attach_lock);
  * The dir cluster lock (held at either PR or EX mode) protects us
  * from unlink and rename on other nodes.
  *
- * The 'create' flag tells us whether we're doing this as a result of
- * a file creation.
- *
  * A dput() can happen asynchronously due to pruning, so we cover
  * attaching and detaching the dentry lock with a
  * dentry_attach_lock.
@@ -199,16 +196,15 @@ DEFINE_SPINLOCK(dentry_attach_lock);
  */
 int ocfs2_dentry_attach_lock(struct dentry *dentry,
                             struct inode *inode,
-                            u64 parent_blkno,
-                            int create)
+                            u64 parent_blkno)
 {
        int ret;
        struct dentry *alias;
        struct ocfs2_dentry_lock *dl = dentry->d_fsdata;
 
-       mlog(0, "Attach \"%.*s\", parent %llu, create %d, fsdata: %p\n",
+       mlog(0, "Attach \"%.*s\", parent %llu, fsdata: %p\n",
             dentry->d_name.len, dentry->d_name.name,
-            (unsigned long long)parent_blkno, create, dl);
+            (unsigned long long)parent_blkno, dl);
 
        /*
         * Negative dentry. We ignore these for now.
@@ -242,10 +238,9 @@ int ocfs2_dentry_attach_lock(struct dentry *dentry,
                 * since we have it pinned, so our reference is safe.
                 */
                dl = alias->d_fsdata;
-               mlog_bug_on_msg(!dl, "parent %llu, ino %llu, create %d\n",
+               mlog_bug_on_msg(!dl, "parent %llu, ino %llu\n",
                                (unsigned long long)parent_blkno,
-                               (unsigned long long)OCFS2_I(inode)->ip_blkno,
-                               create);
+                               (unsigned long long)OCFS2_I(inode)->ip_blkno);
 
                mlog_bug_on_msg(dl->dl_parent_blkno != parent_blkno,
                                " \"%.*s\": old parent: %llu, new: %llu\n",
@@ -283,32 +278,17 @@ out_attach:
        dl->dl_count++;
        spin_unlock(&dentry_attach_lock);
 
-       /*
-        * Creation of a new file means that nobody can possibly have
-        * this name in the system, which means that acquiry of those
-        * locks can easily be optimized.
-        */
-       if (create) {
-               ret = ocfs2_create_new_lock(OCFS2_SB(inode->i_sb),
-                                           &dl->dl_lockres, 0);
-               if (ret)
-                       mlog_errno(ret);
-               goto out;
-       }
-
        /*
         * This actually gets us our PRMODE level lock. From now on,
         * we'll have a notification if one of these names is
         * destroyed on another node.
         */
        ret = ocfs2_dentry_lock(dentry, 0);
-       if (ret) {
+       if (!ret)
+               ocfs2_dentry_unlock(dentry, 0);
+       else
                mlog_errno(ret);
-               goto out;
-       }
-       ocfs2_dentry_unlock(dentry, 0);
 
-out:
        dput(alias);
 
        return ret;
@@ -419,8 +399,7 @@ void ocfs2_dentry_move(struct dentry *dentry, struct dentry *target,
        ocfs2_dentry_lock_put(osb, dentry->d_fsdata);
 
        dentry->d_fsdata = NULL;
-       ret = ocfs2_dentry_attach_lock(dentry, inode,
-                                      OCFS2_I(new_dir)->ip_blkno, 0);
+       ret = ocfs2_dentry_attach_lock(dentry, inode, OCFS2_I(new_dir)->ip_blkno);
        if (ret)
                mlog_errno(ret);