Removed vmtruncate.

Signed-off-by: Marco Stornelli <[email protected]>
---
 fs/jfs/file.c  |    6 ++++--
 fs/jfs/inode.c |   13 +++++++++----
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/fs/jfs/file.c b/fs/jfs/file.c
index 844f946..bcd94e5 100644
--- a/fs/jfs/file.c
+++ b/fs/jfs/file.c
@@ -119,9 +119,12 @@ int jfs_setattr(struct dentry *dentry, struct iattr *iattr)
            iattr->ia_size != i_size_read(inode)) {
                inode_dio_wait(inode);
 
-               rc = vmtruncate(inode, iattr->ia_size);
+               rc = inode_newsize_ok(inode, iattr->ia_size);
                if (rc)
                        return rc;
+
+               truncate_setsize(inode, iattr->ia_size);
+               jfs_truncate(inode);
        }
 
        setattr_copy(inode, iattr);
@@ -133,7 +136,6 @@ int jfs_setattr(struct dentry *dentry, struct iattr *iattr)
 }
 
 const struct inode_operations jfs_file_inode_operations = {
-       .truncate       = jfs_truncate,
        .setxattr       = jfs_setxattr,
        .getxattr       = jfs_getxattr,
        .listxattr      = jfs_listxattr,
diff --git a/fs/jfs/inode.c b/fs/jfs/inode.c
index 4692bf3..895be2e 100644
--- a/fs/jfs/inode.c
+++ b/fs/jfs/inode.c
@@ -310,8 +310,11 @@ static int jfs_write_begin(struct file *file, struct 
address_space *mapping,
                                jfs_get_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);
+                       jfs_truncate(mapping->host);
+               }
        }
 
        return ret;
@@ -340,8 +343,10 @@ static ssize_t jfs_direct_IO(int rw, struct kiocb *iocb,
                loff_t isize = i_size_read(inode);
                loff_t end = offset + iov_length(iov, nr_segs);
 
-               if (end > isize)
-                       vmtruncate(inode, isize);
+               if ((end > isize) && inode_newsize_ok(inode, isize) == 0) {
+                       truncate_setsize(inode, isize);
+                       jfs_truncate(inode);
+               }
        }
 
        return ret;
-- 
1.7.3.4

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Jfs-discussion mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jfs-discussion

Reply via email to