diff options
Diffstat (limited to 'fs/f2fs')
-rw-r--r-- | fs/f2fs/inline.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c index 914b6d37c5cf..e27f290cb3ef 100644 --- a/fs/f2fs/inline.c +++ b/fs/f2fs/inline.c | |||
@@ -84,7 +84,7 @@ int f2fs_convert_inline_page(struct dnode_of_data *dn, struct page *page) | |||
84 | .type = DATA, | 84 | .type = DATA, |
85 | .rw = WRITE_SYNC | REQ_PRIO, | 85 | .rw = WRITE_SYNC | REQ_PRIO, |
86 | }; | 86 | }; |
87 | int err; | 87 | int dirty, err; |
88 | 88 | ||
89 | f2fs_bug_on(F2FS_I_SB(dn->inode), page->index); | 89 | f2fs_bug_on(F2FS_I_SB(dn->inode), page->index); |
90 | 90 | ||
@@ -110,12 +110,17 @@ int f2fs_convert_inline_page(struct dnode_of_data *dn, struct page *page) | |||
110 | kunmap_atomic(dst_addr); | 110 | kunmap_atomic(dst_addr); |
111 | SetPageUptodate(page); | 111 | SetPageUptodate(page); |
112 | no_update: | 112 | no_update: |
113 | /* clear dirty state */ | ||
114 | dirty = clear_page_dirty_for_io(page); | ||
115 | |||
113 | /* write data page to try to make data consistent */ | 116 | /* write data page to try to make data consistent */ |
114 | set_page_writeback(page); | 117 | set_page_writeback(page); |
115 | 118 | ||
116 | write_data_page(page, dn, &new_blk_addr, &fio); | 119 | write_data_page(page, dn, &new_blk_addr, &fio); |
117 | update_extent_cache(new_blk_addr, dn); | 120 | update_extent_cache(new_blk_addr, dn); |
118 | f2fs_wait_on_page_writeback(page, DATA); | 121 | f2fs_wait_on_page_writeback(page, DATA); |
122 | if (dirty) | ||
123 | inode_dec_dirty_pages(dn->inode); | ||
119 | 124 | ||
120 | /* clear inline data and flag after data writeback */ | 125 | /* clear inline data and flag after data writeback */ |
121 | truncate_inline_data(dn->inode_page, 0); | 126 | truncate_inline_data(dn->inode_page, 0); |