|
@@ -2116,6 +2116,9 @@ static int ocfs2_prepare_inode_for_write(struct file *file,
|
|
struct dentry *dentry = file->f_path.dentry;
|
|
struct dentry *dentry = file->f_path.dentry;
|
|
struct inode *inode = dentry->d_inode;
|
|
struct inode *inode = dentry->d_inode;
|
|
loff_t saved_pos = 0, end;
|
|
loff_t saved_pos = 0, end;
|
|
|
|
+ struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
|
|
|
|
+ int full_coherency = !(osb->s_mount_opt &
|
|
|
|
+ OCFS2_MOUNT_COHERENCY_BUFFERED);
|
|
|
|
|
|
/*
|
|
/*
|
|
* We start with a read level meta lock and only jump to an ex
|
|
* We start with a read level meta lock and only jump to an ex
|
|
@@ -2204,7 +2207,7 @@ static int ocfs2_prepare_inode_for_write(struct file *file,
|
|
* one node could wind up truncating another
|
|
* one node could wind up truncating another
|
|
* nodes writes.
|
|
* nodes writes.
|
|
*/
|
|
*/
|
|
- if (end > i_size_read(inode)) {
|
|
|
|
|
|
+ if (end > i_size_read(inode) && !full_coherency) {
|
|
*direct_io = 0;
|
|
*direct_io = 0;
|
|
break;
|
|
break;
|
|
}
|
|
}
|