ocfs2/xattr: Only set buffer update if it doesn't exist in cache.
authorTao Ma <tao.ma@oracle.com>
Thu, 6 Nov 2008 00:10:48 +0000 (08:10 +0800)
committerMark Fasheh <mfasheh@suse.com>
Mon, 5 Jan 2009 16:34:18 +0000 (08:34 -0800)
When we call ocfs2_init_xattr_bucket, we deem that the new buffer head
will be written to disk immediately, so we just use sb_getblk. But in
some cases the buffer may have already been in ocfs2 uptodate cache,
so we only call ocfs2_set_buffer_uptodate if the buffer head isn't
in the cache.

Signed-off-by: Tao Ma <tao.ma@oracle.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
fs/ocfs2/xattr.c

index 87cf39ddfe5b75934dceb3f08907905a2403b097..d8fc714e941576be4484e385c65212d6f6f05521 100644 (file)
@@ -219,8 +219,10 @@ static int ocfs2_init_xattr_bucket(struct ocfs2_xattr_bucket *bucket,
                        break;
                }
 
-               ocfs2_set_new_buffer_uptodate(bucket->bu_inode,
-                                             bucket->bu_bhs[i]);
+               if (!ocfs2_buffer_uptodate(bucket->bu_inode,
+                                          bucket->bu_bhs[i]))
+                       ocfs2_set_new_buffer_uptodate(bucket->bu_inode,
+                                                     bucket->bu_bhs[i]);
        }
 
        if (rc)