diff options
| -rw-r--r-- | fs/f2fs/dir.c | 7 | ||||
| -rw-r--r-- | fs/f2fs/inline.c | 7 |
2 files changed, 14 insertions, 0 deletions
diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c index 37f9c7f55605..c0c933ad43c8 100644 --- a/fs/f2fs/dir.c +++ b/fs/f2fs/dir.c | |||
| @@ -705,6 +705,8 @@ void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct page *page, | |||
| 705 | struct f2fs_dentry_block *dentry_blk; | 705 | struct f2fs_dentry_block *dentry_blk; |
| 706 | unsigned int bit_pos; | 706 | unsigned int bit_pos; |
| 707 | int slots = GET_DENTRY_SLOTS(le16_to_cpu(dentry->name_len)); | 707 | int slots = GET_DENTRY_SLOTS(le16_to_cpu(dentry->name_len)); |
| 708 | struct address_space *mapping = page_mapping(page); | ||
| 709 | unsigned long flags; | ||
| 708 | int i; | 710 | int i; |
| 709 | 711 | ||
| 710 | f2fs_update_time(F2FS_I_SB(dir), REQ_TIME); | 712 | f2fs_update_time(F2FS_I_SB(dir), REQ_TIME); |
| @@ -735,6 +737,11 @@ void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct page *page, | |||
| 735 | 737 | ||
| 736 | if (bit_pos == NR_DENTRY_IN_BLOCK && | 738 | if (bit_pos == NR_DENTRY_IN_BLOCK && |
| 737 | !truncate_hole(dir, page->index, page->index + 1)) { | 739 | !truncate_hole(dir, page->index, page->index + 1)) { |
| 740 | spin_lock_irqsave(&mapping->tree_lock, flags); | ||
| 741 | radix_tree_tag_clear(&mapping->page_tree, page_index(page), | ||
| 742 | PAGECACHE_TAG_DIRTY); | ||
| 743 | spin_unlock_irqrestore(&mapping->tree_lock, flags); | ||
| 744 | |||
| 738 | clear_page_dirty_for_io(page); | 745 | clear_page_dirty_for_io(page); |
| 739 | ClearPagePrivate(page); | 746 | ClearPagePrivate(page); |
| 740 | ClearPageUptodate(page); | 747 | ClearPageUptodate(page); |
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c index c133a4fdecf6..8322e4e7bb3f 100644 --- a/fs/f2fs/inline.c +++ b/fs/f2fs/inline.c | |||
| @@ -202,6 +202,8 @@ int f2fs_write_inline_data(struct inode *inode, struct page *page) | |||
| 202 | { | 202 | { |
| 203 | void *src_addr, *dst_addr; | 203 | void *src_addr, *dst_addr; |
| 204 | struct dnode_of_data dn; | 204 | struct dnode_of_data dn; |
| 205 | struct address_space *mapping = page_mapping(page); | ||
| 206 | unsigned long flags; | ||
| 205 | int err; | 207 | int err; |
| 206 | 208 | ||
| 207 | set_new_dnode(&dn, inode, NULL, NULL, 0); | 209 | set_new_dnode(&dn, inode, NULL, NULL, 0); |
| @@ -223,6 +225,11 @@ int f2fs_write_inline_data(struct inode *inode, struct page *page) | |||
| 223 | kunmap_atomic(src_addr); | 225 | kunmap_atomic(src_addr); |
| 224 | set_page_dirty(dn.inode_page); | 226 | set_page_dirty(dn.inode_page); |
| 225 | 227 | ||
| 228 | spin_lock_irqsave(&mapping->tree_lock, flags); | ||
| 229 | radix_tree_tag_clear(&mapping->page_tree, page_index(page), | ||
| 230 | PAGECACHE_TAG_DIRTY); | ||
| 231 | spin_unlock_irqrestore(&mapping->tree_lock, flags); | ||
| 232 | |||
| 226 | set_inode_flag(inode, FI_APPEND_WRITE); | 233 | set_inode_flag(inode, FI_APPEND_WRITE); |
| 227 | set_inode_flag(inode, FI_DATA_EXIST); | 234 | set_inode_flag(inode, FI_DATA_EXIST); |
| 228 | 235 | ||
