[Ocfs2-devel] [PATCH] ocfs2: fix a refcount condition checking
Wengang Wang
wen.gang.wang at oracle.com
Thu Feb 4 13:20:18 PST 2010
Hi Joel/Tao,
I don't know the reflink very well, so please ignore this patch if I am wrong.
I think in ocfs2_prepare_inode_for_write(), we disable DIO write if the inode
has reflink.
If am right, the way we determine if the inode has reflink is wrong in case
(!has_refcount && direct_io).
Signed-off-by: Wengang Wang <wen.gang.wang at oracle.com>
---
fs/ocfs2/file.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 06ccf6a..77ebb6e 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -1775,7 +1775,7 @@ static int ocfs2_prepare_inode_for_write(struct dentry *dentry,
int *direct_io,
int *has_refcount)
{
- int ret = 0, meta_level = 0;
+ int ret = 0, meta_level = 0, refcount = 0;
struct inode *inode = dentry->d_inode;
loff_t saved_pos, end;
@@ -1834,6 +1834,7 @@ static int ocfs2_prepare_inode_for_write(struct dentry *dentry,
saved_pos,
count,
&meta_level);
+ refcount = 1;
if (has_refcount)
*has_refcount = 1;
}
@@ -1859,7 +1860,7 @@ static int ocfs2_prepare_inode_for_write(struct dentry *dentry,
break;
}
- if (has_refcount && *has_refcount == 1) {
+ if (refcount) {
*direct_io = 0;
break;
}
--
1.6.6
More information about the Ocfs2-devel
mailing list