jfs: drop vmtruncate
Subsystems (2)
PATCH 12/21 jfs: drop vmtruncate
Removed vmtruncate
Signed-off-by Marco Stornelli <[email protected]>
--- fs/jfs/file.c | 6 ++++-- fs/jfs/inode.c | 20 ++++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-)
fs/jfs/file.c +4 -2
@@ -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,
fs/jfs/inode.c +14 -6
@@ -300,6 +300,16 @@ static int jfs_readpages(struct file *file, struct address_space *mapping,return mpage_readpages (mapping, pages, nr_pages, jfs_get_block); } +static void jfs_write_failed (struct address_space *mapping,loff_t to) +{ +struct inode *inode = mapping->host; + +if (to > inode->i_size) { +truncate_pagecache (inode, to, inode->i_size); +jfs_truncate (inode); + } +} +static int jfs_write_begin (struct file *file,struct address_space *mapping,loff_t pos,unsigned len,unsigned flags,struct page **pagep,void **fsdata)
@@ -308,11 +318,8 @@ static int jfs_write_begin(struct file *file, struct address_space *mapping, ret =nobh_write_begin (mapping, pos, len, flags, pagep, fsdata, jfs_get_block); -if (unlikely (ret)) { -loff_t isize = mapping->host->i_size; -if (pos + len > isize) -vmtruncate (mapping->host, isize); - } +if (unlikely (ret)) +jfs_write_failed (mapping, pos + len);return ret; }
@@ -326,6 +333,7 @@ static ssize_t jfs_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov, loff_t offset, unsigned long nr_segs) { struct file *file = iocb->ki_filp; +struct address_space *mapping = file->f_mapping;struct inode *inode = file->f_mapping->host;ssize_t ret;
@@ -341,7 +349,7 @@ static ssize_t jfs_direct_IO(int rw, struct kiocb *iocb,loff_t end = offset +iov_length (iov, nr_segs);if (end > isize) -vmtruncate (inode, isize); +jfs_write_failed (mapping, end); }return ret;
Signature · 1 line
1.7.3.4