diff options
Diffstat (limited to 'fs/f2fs/checkpoint.c')
-rw-r--r-- | fs/f2fs/checkpoint.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c index 1f52b70ff9d1..aef32f36e2f3 100644 --- a/fs/f2fs/checkpoint.c +++ b/fs/f2fs/checkpoint.c | |||
@@ -190,12 +190,9 @@ static int f2fs_write_meta_pages(struct address_space *mapping, | |||
190 | int nrpages = nr_pages_to_skip(sbi, META); | 190 | int nrpages = nr_pages_to_skip(sbi, META); |
191 | long written; | 191 | long written; |
192 | 192 | ||
193 | if (wbc->for_kupdate) | ||
194 | return 0; | ||
195 | |||
196 | /* collect a number of dirty meta pages and write together */ | 193 | /* collect a number of dirty meta pages and write together */ |
197 | if (get_pages(sbi, F2FS_DIRTY_META) < nrpages) | 194 | if (wbc->for_kupdate || get_pages(sbi, F2FS_DIRTY_META) < nrpages) |
198 | return 0; | 195 | goto skip_write; |
199 | 196 | ||
200 | /* if mounting is failed, skip writing node pages */ | 197 | /* if mounting is failed, skip writing node pages */ |
201 | mutex_lock(&sbi->cp_mutex); | 198 | mutex_lock(&sbi->cp_mutex); |
@@ -203,6 +200,10 @@ static int f2fs_write_meta_pages(struct address_space *mapping, | |||
203 | mutex_unlock(&sbi->cp_mutex); | 200 | mutex_unlock(&sbi->cp_mutex); |
204 | wbc->nr_to_write -= written; | 201 | wbc->nr_to_write -= written; |
205 | return 0; | 202 | return 0; |
203 | |||
204 | skip_write: | ||
205 | wbc->pages_skipped += get_pages(sbi, F2FS_DIRTY_META); | ||
206 | return 0; | ||
206 | } | 207 | } |
207 | 208 | ||
208 | long sync_meta_pages(struct f2fs_sb_info *sbi, enum page_type type, | 209 | long sync_meta_pages(struct f2fs_sb_info *sbi, enum page_type type, |