提交 7caef267 编写于 作者: K Kirill A. Shutemov 提交者: Linus Torvalds

truncate: drop 'oldsize' truncate_pagecache() parameter

truncate_pagecache() doesn't care about old size since commit
cedabed4 ("vfs: Fix vmtruncate() regression").  Let's drop it.
Signed-off-by: NKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 5fbc4616
...@@ -50,7 +50,7 @@ static void adfs_write_failed(struct address_space *mapping, loff_t to) ...@@ -50,7 +50,7 @@ static void adfs_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) if (to > inode->i_size)
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
} }
static int adfs_write_begin(struct file *file, struct address_space *mapping, static int adfs_write_begin(struct file *file, struct address_space *mapping,
......
...@@ -406,7 +406,7 @@ static void affs_write_failed(struct address_space *mapping, loff_t to) ...@@ -406,7 +406,7 @@ static void affs_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) { if (to > inode->i_size) {
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
affs_truncate(inode); affs_truncate(inode);
} }
} }
......
...@@ -166,7 +166,7 @@ static void bfs_write_failed(struct address_space *mapping, loff_t to) ...@@ -166,7 +166,7 @@ static void bfs_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) if (to > inode->i_size)
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
} }
static int bfs_write_begin(struct file *file, struct address_space *mapping, static int bfs_write_begin(struct file *file, struct address_space *mapping,
......
...@@ -221,12 +221,10 @@ int btrfs_truncate_free_space_cache(struct btrfs_root *root, ...@@ -221,12 +221,10 @@ int btrfs_truncate_free_space_cache(struct btrfs_root *root,
struct btrfs_path *path, struct btrfs_path *path,
struct inode *inode) struct inode *inode)
{ {
loff_t oldsize;
int ret = 0; int ret = 0;
oldsize = i_size_read(inode);
btrfs_i_size_write(inode, 0); btrfs_i_size_write(inode, 0);
truncate_pagecache(inode, oldsize, 0); truncate_pagecache(inode, 0);
/* /*
* We don't need an orphan item because truncating the free space cache * We don't need an orphan item because truncating the free space cache
......
...@@ -4409,7 +4409,7 @@ static int btrfs_setsize(struct inode *inode, struct iattr *attr) ...@@ -4409,7 +4409,7 @@ static int btrfs_setsize(struct inode *inode, struct iattr *attr)
inode->i_ctime = inode->i_mtime = current_fs_time(inode->i_sb); inode->i_ctime = inode->i_mtime = current_fs_time(inode->i_sb);
if (newsize > oldsize) { if (newsize > oldsize) {
truncate_pagecache(inode, oldsize, newsize); truncate_pagecache(inode, newsize);
ret = btrfs_cont_expand(inode, oldsize, newsize); ret = btrfs_cont_expand(inode, oldsize, newsize);
if (ret) if (ret)
return ret; return ret;
......
...@@ -1852,14 +1852,11 @@ static int cifs_truncate_page(struct address_space *mapping, loff_t from) ...@@ -1852,14 +1852,11 @@ static int cifs_truncate_page(struct address_space *mapping, loff_t from)
static void cifs_setsize(struct inode *inode, loff_t offset) static void cifs_setsize(struct inode *inode, loff_t offset)
{ {
loff_t oldsize;
spin_lock(&inode->i_lock); spin_lock(&inode->i_lock);
oldsize = inode->i_size;
i_size_write(inode, offset); i_size_write(inode, offset);
spin_unlock(&inode->i_lock); spin_unlock(&inode->i_lock);
truncate_pagecache(inode, oldsize, offset); truncate_pagecache(inode, offset);
} }
static int static int
......
...@@ -861,7 +861,7 @@ static int exofs_writepage(struct page *page, struct writeback_control *wbc) ...@@ -861,7 +861,7 @@ static int exofs_writepage(struct page *page, struct writeback_control *wbc)
static void _write_failed(struct inode *inode, loff_t to) static void _write_failed(struct inode *inode, loff_t to)
{ {
if (to > inode->i_size) if (to > inode->i_size)
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
} }
int exofs_write_begin(struct file *file, struct address_space *mapping, int exofs_write_begin(struct file *file, struct address_space *mapping,
......
...@@ -58,7 +58,7 @@ static void ext2_write_failed(struct address_space *mapping, loff_t to) ...@@ -58,7 +58,7 @@ static void ext2_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) { if (to > inode->i_size) {
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
ext2_truncate_blocks(inode, inode->i_size); ext2_truncate_blocks(inode, inode->i_size);
} }
} }
......
...@@ -4587,7 +4587,6 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr) ...@@ -4587,7 +4587,6 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
if (attr->ia_valid & ATTR_SIZE && attr->ia_size != inode->i_size) { if (attr->ia_valid & ATTR_SIZE && attr->ia_size != inode->i_size) {
handle_t *handle; handle_t *handle;
loff_t oldsize = inode->i_size;
if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) { if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) {
struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
...@@ -4650,7 +4649,7 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr) ...@@ -4650,7 +4649,7 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
* Truncate pagecache after we've waited for commit * Truncate pagecache after we've waited for commit
* in data=journal mode to make pages freeable. * in data=journal mode to make pages freeable.
*/ */
truncate_pagecache(inode, oldsize, inode->i_size); truncate_pagecache(inode, inode->i_size);
} }
/* /*
* We want to call ext4_truncate() even if attr->ia_size == * We want to call ext4_truncate() even if attr->ia_size ==
......
...@@ -147,7 +147,7 @@ static void fat_write_failed(struct address_space *mapping, loff_t to) ...@@ -147,7 +147,7 @@ static void fat_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) { if (to > inode->i_size) {
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
fat_truncate_blocks(inode, inode->i_size); fat_truncate_blocks(inode, inode->i_size);
} }
} }
......
...@@ -1678,7 +1678,7 @@ int fuse_do_setattr(struct inode *inode, struct iattr *attr, ...@@ -1678,7 +1678,7 @@ int fuse_do_setattr(struct inode *inode, struct iattr *attr,
* FUSE_NOWRITE, otherwise fuse_launder_page() would deadlock. * FUSE_NOWRITE, otherwise fuse_launder_page() would deadlock.
*/ */
if (S_ISREG(inode->i_mode) && oldsize != outarg.attr.size) { if (S_ISREG(inode->i_mode) && oldsize != outarg.attr.size) {
truncate_pagecache(inode, oldsize, outarg.attr.size); truncate_pagecache(inode, outarg.attr.size);
invalidate_inode_pages2(inode->i_mapping); invalidate_inode_pages2(inode->i_mapping);
} }
......
...@@ -218,7 +218,7 @@ void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr, ...@@ -218,7 +218,7 @@ void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr,
bool inval = false; bool inval = false;
if (oldsize != attr->size) { if (oldsize != attr->size) {
truncate_pagecache(inode, oldsize, attr->size); truncate_pagecache(inode, attr->size);
inval = true; inval = true;
} else if (fc->auto_inval_data) { } else if (fc->auto_inval_data) {
struct timespec new_mtime = { struct timespec new_mtime = {
......
...@@ -1016,7 +1016,7 @@ static int gfs2_journaled_truncate(struct inode *inode, u64 oldsize, u64 newsize ...@@ -1016,7 +1016,7 @@ static int gfs2_journaled_truncate(struct inode *inode, u64 oldsize, u64 newsize
chunk = oldsize - newsize; chunk = oldsize - newsize;
if (chunk > max_chunk) if (chunk > max_chunk)
chunk = max_chunk; chunk = max_chunk;
truncate_pagecache(inode, oldsize, oldsize - chunk); truncate_pagecache(inode, oldsize - chunk);
oldsize -= chunk; oldsize -= chunk;
gfs2_trans_end(sdp); gfs2_trans_end(sdp);
error = gfs2_trans_begin(sdp, RES_DINODE, GFS2_JTRUNC_REVOKES); error = gfs2_trans_begin(sdp, RES_DINODE, GFS2_JTRUNC_REVOKES);
...@@ -1067,7 +1067,7 @@ static int trunc_start(struct inode *inode, u64 oldsize, u64 newsize) ...@@ -1067,7 +1067,7 @@ static int trunc_start(struct inode *inode, u64 oldsize, u64 newsize)
if (journaled) if (journaled)
error = gfs2_journaled_truncate(inode, oldsize, newsize); error = gfs2_journaled_truncate(inode, oldsize, newsize);
else else
truncate_pagecache(inode, oldsize, newsize); truncate_pagecache(inode, newsize);
if (error) { if (error) {
brelse(dibh); brelse(dibh);
......
...@@ -41,7 +41,7 @@ static void hfs_write_failed(struct address_space *mapping, loff_t to) ...@@ -41,7 +41,7 @@ static void hfs_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) { if (to > inode->i_size) {
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
hfs_file_truncate(inode); hfs_file_truncate(inode);
} }
} }
......
...@@ -36,7 +36,7 @@ static void hfsplus_write_failed(struct address_space *mapping, loff_t to) ...@@ -36,7 +36,7 @@ static void hfsplus_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) { if (to > inode->i_size) {
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
hfsplus_file_truncate(inode); hfsplus_file_truncate(inode);
} }
} }
......
...@@ -138,7 +138,7 @@ static void hpfs_write_failed(struct address_space *mapping, loff_t to) ...@@ -138,7 +138,7 @@ static void hpfs_write_failed(struct address_space *mapping, loff_t to)
hpfs_lock(inode->i_sb); hpfs_lock(inode->i_sb);
if (to > inode->i_size) { if (to > inode->i_size) {
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
hpfs_truncate(inode); hpfs_truncate(inode);
} }
......
...@@ -306,7 +306,7 @@ static void jfs_write_failed(struct address_space *mapping, loff_t to) ...@@ -306,7 +306,7 @@ static void jfs_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) { if (to > inode->i_size) {
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
jfs_truncate(inode); jfs_truncate(inode);
} }
} }
......
...@@ -400,7 +400,7 @@ static void minix_write_failed(struct address_space *mapping, loff_t to) ...@@ -400,7 +400,7 @@ static void minix_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) { if (to > inode->i_size) {
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
minix_truncate(inode); minix_truncate(inode);
} }
} }
......
...@@ -541,7 +541,6 @@ EXPORT_SYMBOL_GPL(nfs_setattr); ...@@ -541,7 +541,6 @@ EXPORT_SYMBOL_GPL(nfs_setattr);
*/ */
static int nfs_vmtruncate(struct inode * inode, loff_t offset) static int nfs_vmtruncate(struct inode * inode, loff_t offset)
{ {
loff_t oldsize;
int err; int err;
err = inode_newsize_ok(inode, offset); err = inode_newsize_ok(inode, offset);
...@@ -549,11 +548,10 @@ static int nfs_vmtruncate(struct inode * inode, loff_t offset) ...@@ -549,11 +548,10 @@ static int nfs_vmtruncate(struct inode * inode, loff_t offset)
goto out; goto out;
spin_lock(&inode->i_lock); spin_lock(&inode->i_lock);
oldsize = inode->i_size;
i_size_write(inode, offset); i_size_write(inode, offset);
spin_unlock(&inode->i_lock); spin_unlock(&inode->i_lock);
truncate_pagecache(inode, oldsize, offset); truncate_pagecache(inode, offset);
out: out:
return err; return err;
} }
......
...@@ -254,7 +254,7 @@ void nilfs_write_failed(struct address_space *mapping, loff_t to) ...@@ -254,7 +254,7 @@ void nilfs_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) { if (to > inode->i_size) {
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
nilfs_truncate(inode); nilfs_truncate(inode);
} }
} }
......
...@@ -1768,7 +1768,7 @@ static void ntfs_write_failed(struct address_space *mapping, loff_t to) ...@@ -1768,7 +1768,7 @@ static void ntfs_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) { if (to > inode->i_size) {
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
ntfs_truncate_vfs(inode); ntfs_truncate_vfs(inode);
} }
} }
......
...@@ -311,7 +311,7 @@ static void omfs_write_failed(struct address_space *mapping, loff_t to) ...@@ -311,7 +311,7 @@ static void omfs_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) { if (to > inode->i_size) {
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
omfs_truncate(inode); omfs_truncate(inode);
} }
} }
......
...@@ -469,7 +469,7 @@ static void sysv_write_failed(struct address_space *mapping, loff_t to) ...@@ -469,7 +469,7 @@ static void sysv_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) { if (to > inode->i_size) {
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
sysv_truncate(inode); sysv_truncate(inode);
} }
} }
......
...@@ -172,7 +172,7 @@ static void udf_write_failed(struct address_space *mapping, loff_t to) ...@@ -172,7 +172,7 @@ static void udf_write_failed(struct address_space *mapping, loff_t to)
loff_t isize = inode->i_size; loff_t isize = inode->i_size;
if (to > isize) { if (to > isize) {
truncate_pagecache(inode, to, isize); truncate_pagecache(inode, isize);
if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) { if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) {
down_write(&iinfo->i_data_sem); down_write(&iinfo->i_data_sem);
udf_clear_extent_cache(inode); udf_clear_extent_cache(inode);
......
...@@ -531,7 +531,7 @@ static void ufs_write_failed(struct address_space *mapping, loff_t to) ...@@ -531,7 +531,7 @@ static void ufs_write_failed(struct address_space *mapping, loff_t to)
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
if (to > inode->i_size) if (to > inode->i_size)
truncate_pagecache(inode, to, inode->i_size); truncate_pagecache(inode, inode->i_size);
} }
static int ufs_write_begin(struct file *file, struct address_space *mapping, static int ufs_write_begin(struct file *file, struct address_space *mapping,
......
...@@ -1582,7 +1582,7 @@ xfs_vm_write_begin( ...@@ -1582,7 +1582,7 @@ xfs_vm_write_begin(
unlock_page(page); unlock_page(page);
if (pos + len > i_size_read(inode)) if (pos + len > i_size_read(inode))
truncate_pagecache(inode, pos + len, i_size_read(inode)); truncate_pagecache(inode, i_size_read(inode));
page_cache_release(page); page_cache_release(page);
page = NULL; page = NULL;
...@@ -1618,7 +1618,7 @@ xfs_vm_write_end( ...@@ -1618,7 +1618,7 @@ xfs_vm_write_end(
loff_t to = pos + len; loff_t to = pos + len;
if (to > isize) { if (to > isize) {
truncate_pagecache(inode, to, isize); truncate_pagecache(inode, isize);
xfs_vm_kill_delalloc_range(inode, isize, to); xfs_vm_kill_delalloc_range(inode, isize, to);
} }
} }
......
...@@ -985,7 +985,7 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping, ...@@ -985,7 +985,7 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
unmap_mapping_range(mapping, holebegin, holelen, 0); unmap_mapping_range(mapping, holebegin, holelen, 0);
} }
extern void truncate_pagecache(struct inode *inode, loff_t old, loff_t new); extern void truncate_pagecache(struct inode *inode, loff_t new);
extern void truncate_setsize(struct inode *inode, loff_t newsize); extern void truncate_setsize(struct inode *inode, loff_t newsize);
void truncate_pagecache_range(struct inode *inode, loff_t offset, loff_t end); void truncate_pagecache_range(struct inode *inode, loff_t offset, loff_t end);
int truncate_inode_page(struct address_space *mapping, struct page *page); int truncate_inode_page(struct address_space *mapping, struct page *page);
......
...@@ -567,7 +567,6 @@ EXPORT_SYMBOL_GPL(invalidate_inode_pages2); ...@@ -567,7 +567,6 @@ EXPORT_SYMBOL_GPL(invalidate_inode_pages2);
/** /**
* truncate_pagecache - unmap and remove pagecache that has been truncated * truncate_pagecache - unmap and remove pagecache that has been truncated
* @inode: inode * @inode: inode
* @oldsize: old file size
* @newsize: new file size * @newsize: new file size
* *
* inode's new i_size must already be written before truncate_pagecache * inode's new i_size must already be written before truncate_pagecache
...@@ -580,7 +579,7 @@ EXPORT_SYMBOL_GPL(invalidate_inode_pages2); ...@@ -580,7 +579,7 @@ EXPORT_SYMBOL_GPL(invalidate_inode_pages2);
* situations such as writepage being called for a page that has already * situations such as writepage being called for a page that has already
* had its underlying blocks deallocated. * had its underlying blocks deallocated.
*/ */
void truncate_pagecache(struct inode *inode, loff_t oldsize, loff_t newsize) void truncate_pagecache(struct inode *inode, loff_t newsize)
{ {
struct address_space *mapping = inode->i_mapping; struct address_space *mapping = inode->i_mapping;
loff_t holebegin = round_up(newsize, PAGE_SIZE); loff_t holebegin = round_up(newsize, PAGE_SIZE);
...@@ -614,12 +613,8 @@ EXPORT_SYMBOL(truncate_pagecache); ...@@ -614,12 +613,8 @@ EXPORT_SYMBOL(truncate_pagecache);
*/ */
void truncate_setsize(struct inode *inode, loff_t newsize) void truncate_setsize(struct inode *inode, loff_t newsize)
{ {
loff_t oldsize;
oldsize = inode->i_size;
i_size_write(inode, newsize); i_size_write(inode, newsize);
truncate_pagecache(inode, newsize);
truncate_pagecache(inode, oldsize, newsize);
} }
EXPORT_SYMBOL(truncate_setsize); EXPORT_SYMBOL(truncate_setsize);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册