[PATCH] "ext[34]: EA block reference count racing fix" performance fix
authorAndrew Morton <akpm@linux-foundation.org>
Fri, 23 Mar 2007 07:10:02 +0000 (00:10 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Fri, 23 Mar 2007 18:01:22 +0000 (11:01 -0700)
A little mistake in 8a2bfdcbfa441d8b0e5cb9c9a7f45f77f80da465 is making all
transactions synchronous, which reduces ext3 performance to comical levels.

Cc: Mingming Cao <cmm@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/ext3/xattr.c

index 12f7dda1232cb8b17749d6f3e87d6ea77a40bb0c..f58cbb26323e1ea666d78eba4cb4d3bd4c16490a 100644 (file)
@@ -495,7 +495,8 @@ ext3_xattr_release_block(handle_t *handle, struct inode *inode,
                BHDR(bh)->h_refcount = cpu_to_le32(
                                le32_to_cpu(BHDR(bh)->h_refcount) - 1);
                error = ext3_journal_dirty_metadata(handle, bh);
-               handle->h_sync = 1;
+               if (IS_SYNC(inode))
+                       handle->h_sync = 1;
                DQUOT_FREE_BLOCK(inode, 1);
                ea_bdebug(bh, "refcount now=%d; releasing",
                          le32_to_cpu(BHDR(bh)->h_refcount));