diff options
Diffstat (limited to 'fs/ocfs2/file.c')
| -rw-r--r-- | fs/ocfs2/file.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index 1c6220a8e07..6a13ea64c44 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c @@ -1052,7 +1052,7 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr)  	}  	/* -	 * This will intentionally not wind up calling vmtruncate(), +	 * This will intentionally not wind up calling simple_setsize(),  	 * since all the work for a size change has been done above.  	 * Otherwise, we could get into problems with truncate as  	 * ip_alloc_sem is used there to protect against i_size @@ -2118,9 +2118,13 @@ relock:  			 * direct write may have instantiated a few  			 * blocks outside i_size. Trim these off again.  			 * Don't need i_size_read because we hold i_mutex. +			 * +			 * XXX(hch): this looks buggy because ocfs2 did not +			 * actually implement ->truncate.  Take a look at +			 * the new truncate sequence and update this accordingly  			 */  			if (*ppos + count > inode->i_size) -				vmtruncate(inode, inode->i_size); +				simple_setsize(inode, inode->i_size);  			ret = written;  			goto out_dio;  		} | 
