2012-10-06 08:17:29

by Marco Stornelli

[permalink] [raw]
Subject: [PATCH 01/22] ufs: drop vmtruncate

Removed vmtruncate.

Signed-off-by: Marco Stornelli <[email protected]>
---
fs/ufs/inode.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
index eb6d0b7..2b43ce9 100644
--- a/fs/ufs/inode.c
+++ b/fs/ufs/inode.c
@@ -536,8 +536,9 @@ static int ufs_write_begin(struct file *file, struct address_space *mapping,
ufs_getfrag_block);
if (unlikely(ret)) {
loff_t isize = mapping->host->i_size;
- if (pos + len > isize)
- vmtruncate(mapping->host, isize);
+ if ((pos + len > isize) &&
+ inode_newsize_ok(mapping->host, isize) == 0)
+ truncate_setsize(mapping->host, isize);
}

return ret;
--
1.7.3.4


2012-10-13 16:17:17

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH 01/22] ufs: drop vmtruncate

> @@ -536,8 +536,9 @@ static int ufs_write_begin(struct file *file, struct address_space *mapping,
> ufs_getfrag_block);
> if (unlikely(ret)) {
> loff_t isize = mapping->host->i_size;
> - if (pos + len > isize)
> - vmtruncate(mapping->host, isize);
> + if ((pos + len > isize) &&
> + inode_newsize_ok(mapping->host, isize) == 0)
> + truncate_setsize(mapping->host, isize);

write_begin always truncates down, so there should be no call to
inode_newsize_ok here.