ocfs2: Clean up the checks for CoW and direct I/O.
authorWengang Wang <wen.gang.wang@oracle.com>
Tue, 9 Feb 2010 06:57:45 +0000 (14:57 +0800)
committerJoel Becker <joel.becker@oracle.com>
Fri, 26 Feb 2010 23:41:07 +0000 (15:41 -0800)
When ocfs2 has to do CoW for refcounted extents, we disable direct I/O
and go through the buffered I/O path.  This makes the combined check
easier to read.

Signed-off-by: Wengang Wang <wen.gang.wang@oracle.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
fs/ocfs2/file.c

index 558ce03..da097bd 100644 (file)
@@ -1836,6 +1836,8 @@ static int ocfs2_prepare_inode_for_write(struct dentry *dentry,
                                                               &meta_level);
                        if (has_refcount)
                                *has_refcount = 1;
+                       if (direct_io)
+                               *direct_io = 0;
                }
 
                if (ret < 0) {
@@ -1859,10 +1861,6 @@ static int ocfs2_prepare_inode_for_write(struct dentry *dentry,
                        break;
                }
 
-               if (has_refcount && *has_refcount == 1) {
-                       *direct_io = 0;
-                       break;
-               }
                /*
                 * Allowing concurrent direct writes means
                 * i_size changes wouldn't be synchronized, so