mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 05:04:09 +08:00
f2fs: introduce f2fs_i_size_write with mark_inode_dirty_sync
This patch introduces f2fs_i_size_write() to call mark_inode_dirty_sync() with i_size_write(). Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
91942321e4
commit
fc9581c809
@ -564,7 +564,7 @@ struct page *get_new_data_page(struct inode *inode,
|
|||||||
got_it:
|
got_it:
|
||||||
if (new_i_size && i_size_read(inode) <
|
if (new_i_size && i_size_read(inode) <
|
||||||
((loff_t)(index + 1) << PAGE_SHIFT)) {
|
((loff_t)(index + 1) << PAGE_SHIFT)) {
|
||||||
i_size_write(inode, ((loff_t)(index + 1) << PAGE_SHIFT));
|
f2fs_i_size_write(inode, ((loff_t)(index + 1) << PAGE_SHIFT));
|
||||||
/* Only the directory inode sets new_i_size */
|
/* Only the directory inode sets new_i_size */
|
||||||
set_inode_flag(inode, FI_UPDATE_DIR);
|
set_inode_flag(inode, FI_UPDATE_DIR);
|
||||||
}
|
}
|
||||||
@ -605,7 +605,7 @@ alloc:
|
|||||||
fofs = start_bidx_of_node(ofs_of_node(dn->node_page), dn->inode) +
|
fofs = start_bidx_of_node(ofs_of_node(dn->node_page), dn->inode) +
|
||||||
dn->ofs_in_node;
|
dn->ofs_in_node;
|
||||||
if (i_size_read(dn->inode) < ((loff_t)(fofs + 1) << PAGE_SHIFT))
|
if (i_size_read(dn->inode) < ((loff_t)(fofs + 1) << PAGE_SHIFT))
|
||||||
i_size_write(dn->inode,
|
f2fs_i_size_write(dn->inode,
|
||||||
((loff_t)(fofs + 1) << PAGE_SHIFT));
|
((loff_t)(fofs + 1) << PAGE_SHIFT));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1711,10 +1711,8 @@ static int f2fs_write_end(struct file *file,
|
|||||||
|
|
||||||
set_page_dirty(page);
|
set_page_dirty(page);
|
||||||
|
|
||||||
if (pos + copied > i_size_read(inode)) {
|
if (pos + copied > i_size_read(inode))
|
||||||
i_size_write(inode, pos + copied);
|
f2fs_i_size_write(inode, pos + copied);
|
||||||
mark_inode_dirty(inode);
|
|
||||||
}
|
|
||||||
|
|
||||||
f2fs_put_page(page, 1);
|
f2fs_put_page(page, 1);
|
||||||
f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
|
f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
|
||||||
|
@ -686,7 +686,7 @@ void f2fs_drop_nlink(struct inode *dir, struct inode *inode, struct page *page)
|
|||||||
drop_nlink(inode);
|
drop_nlink(inode);
|
||||||
if (S_ISDIR(inode->i_mode)) {
|
if (S_ISDIR(inode->i_mode)) {
|
||||||
drop_nlink(inode);
|
drop_nlink(inode);
|
||||||
i_size_write(inode, 0);
|
f2fs_i_size_write(inode, 0);
|
||||||
}
|
}
|
||||||
up_write(&F2FS_I(inode)->i_sem);
|
up_write(&F2FS_I(inode)->i_sem);
|
||||||
update_inode_page(inode);
|
update_inode_page(inode);
|
||||||
|
@ -1556,6 +1556,15 @@ static inline void set_acl_inode(struct inode *inode, umode_t mode)
|
|||||||
set_inode_flag(inode, FI_ACL_MODE);
|
set_inode_flag(inode, FI_ACL_MODE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void f2fs_i_size_write(struct inode *inode, loff_t i_size)
|
||||||
|
{
|
||||||
|
if (i_size_read(inode) == i_size)
|
||||||
|
return;
|
||||||
|
|
||||||
|
i_size_write(inode, i_size);
|
||||||
|
mark_inode_dirty_sync(inode);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void get_inline_info(struct inode *inode, struct f2fs_inode *ri)
|
static inline void get_inline_info(struct inode *inode, struct f2fs_inode *ri)
|
||||||
{
|
{
|
||||||
if (ri->i_inline & F2FS_INLINE_XATTR)
|
if (ri->i_inline & F2FS_INLINE_XATTR)
|
||||||
|
@ -988,7 +988,7 @@ static int f2fs_collapse_range(struct inode *inode, loff_t offset, loff_t len)
|
|||||||
|
|
||||||
ret = truncate_blocks(inode, new_size, true);
|
ret = truncate_blocks(inode, new_size, true);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
i_size_write(inode, new_size);
|
f2fs_i_size_write(inode, new_size);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -1125,8 +1125,7 @@ static int f2fs_zero_range(struct inode *inode, loff_t offset, loff_t len,
|
|||||||
|
|
||||||
out:
|
out:
|
||||||
if (!(mode & FALLOC_FL_KEEP_SIZE) && i_size_read(inode) < new_size) {
|
if (!(mode & FALLOC_FL_KEEP_SIZE) && i_size_read(inode) < new_size) {
|
||||||
i_size_write(inode, new_size);
|
f2fs_i_size_write(inode, new_size);
|
||||||
mark_inode_dirty(inode);
|
|
||||||
update_inode_page(inode);
|
update_inode_page(inode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1186,7 +1185,7 @@ static int f2fs_insert_range(struct inode *inode, loff_t offset, loff_t len)
|
|||||||
truncate_pagecache(inode, offset);
|
truncate_pagecache(inode, offset);
|
||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
i_size_write(inode, new_size);
|
f2fs_i_size_write(inode, new_size);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1235,8 +1234,7 @@ static int expand_inode_data(struct inode *inode, loff_t offset,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!(mode & FALLOC_FL_KEEP_SIZE) && i_size_read(inode) < new_size) {
|
if (!(mode & FALLOC_FL_KEEP_SIZE) && i_size_read(inode) < new_size) {
|
||||||
i_size_write(inode, new_size);
|
f2fs_i_size_write(inode, new_size);
|
||||||
mark_inode_dirty(inode);
|
|
||||||
update_inode_page(inode);
|
update_inode_page(inode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -340,7 +340,7 @@ int make_empty_inline_dir(struct inode *inode, struct inode *parent,
|
|||||||
|
|
||||||
/* update i_size to MAX_INLINE_DATA */
|
/* update i_size to MAX_INLINE_DATA */
|
||||||
if (i_size_read(inode) < MAX_INLINE_DATA) {
|
if (i_size_read(inode) < MAX_INLINE_DATA) {
|
||||||
i_size_write(inode, MAX_INLINE_DATA);
|
f2fs_i_size_write(inode, MAX_INLINE_DATA);
|
||||||
set_inode_flag(inode, FI_UPDATE_DIR);
|
set_inode_flag(inode, FI_UPDATE_DIR);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -402,7 +402,7 @@ static int f2fs_move_inline_dirents(struct inode *dir, struct page *ipage,
|
|||||||
|
|
||||||
F2FS_I(dir)->i_current_depth = 1;
|
F2FS_I(dir)->i_current_depth = 1;
|
||||||
if (i_size_read(dir) < PAGE_SIZE) {
|
if (i_size_read(dir) < PAGE_SIZE) {
|
||||||
i_size_write(dir, PAGE_SIZE);
|
f2fs_i_size_write(dir, PAGE_SIZE);
|
||||||
set_inode_flag(dir, FI_UPDATE_DIR);
|
set_inode_flag(dir, FI_UPDATE_DIR);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -493,7 +493,7 @@ recover:
|
|||||||
lock_page(ipage);
|
lock_page(ipage);
|
||||||
memcpy(inline_dentry, backup_dentry, MAX_INLINE_DATA);
|
memcpy(inline_dentry, backup_dentry, MAX_INLINE_DATA);
|
||||||
F2FS_I(dir)->i_current_depth = 0;
|
F2FS_I(dir)->i_current_depth = 0;
|
||||||
i_size_write(dir, MAX_INLINE_DATA);
|
f2fs_i_size_write(dir, MAX_INLINE_DATA);
|
||||||
update_inode(dir, ipage);
|
update_inode(dir, ipage);
|
||||||
f2fs_put_page(ipage, 1);
|
f2fs_put_page(ipage, 1);
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@ static void recover_inode(struct inode *inode, struct page *page)
|
|||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
inode->i_mode = le16_to_cpu(raw->i_mode);
|
inode->i_mode = le16_to_cpu(raw->i_mode);
|
||||||
i_size_write(inode, le64_to_cpu(raw->i_size));
|
f2fs_i_size_write(inode, le64_to_cpu(raw->i_size));
|
||||||
inode->i_atime.tv_sec = le64_to_cpu(raw->i_mtime);
|
inode->i_atime.tv_sec = le64_to_cpu(raw->i_mtime);
|
||||||
inode->i_ctime.tv_sec = le64_to_cpu(raw->i_ctime);
|
inode->i_ctime.tv_sec = le64_to_cpu(raw->i_ctime);
|
||||||
inode->i_mtime.tv_sec = le64_to_cpu(raw->i_mtime);
|
inode->i_mtime.tv_sec = le64_to_cpu(raw->i_mtime);
|
||||||
|
@ -568,7 +568,7 @@ static int f2fs_drop_inode(struct inode *inode)
|
|||||||
f2fs_destroy_extent_node(inode);
|
f2fs_destroy_extent_node(inode);
|
||||||
|
|
||||||
sb_start_intwrite(inode->i_sb);
|
sb_start_intwrite(inode->i_sb);
|
||||||
i_size_write(inode, 0);
|
f2fs_i_size_write(inode, 0);
|
||||||
|
|
||||||
if (F2FS_HAS_BLOCKS(inode))
|
if (F2FS_HAS_BLOCKS(inode))
|
||||||
f2fs_truncate(inode, true);
|
f2fs_truncate(inode, true);
|
||||||
|
Loading…
Reference in New Issue
Block a user