aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk@kernel.org>2016-01-02 01:03:47 -0500
committerJaegeuk Kim <jaegeuk@kernel.org>2016-01-08 14:45:21 -0500
commit7612118ae8cdd36cbd74d873855d70252d2d49e3 (patch)
tree392767ab14193434686a7c4d5ef20f164bacb0b6
parent0e022ea8fc49ed9c72ab9dcd9ca96414dc026184 (diff)
f2fs: check the page status filled from disk
After reading a page, we need to check whether there is any error. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r--fs/f2fs/data.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index ac5bea0f5f09..77c3bbb9bee0 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -413,7 +413,7 @@ struct page *get_new_data_page(struct inode *inode,
413 struct page *page; 413 struct page *page;
414 struct dnode_of_data dn; 414 struct dnode_of_data dn;
415 int err; 415 int err;
416repeat: 416
417 page = f2fs_grab_cache_page(mapping, index, true); 417 page = f2fs_grab_cache_page(mapping, index, true);
418 if (!page) { 418 if (!page) {
419 /* 419 /*
@@ -442,12 +442,11 @@ repeat:
442 } else { 442 } else {
443 f2fs_put_page(page, 1); 443 f2fs_put_page(page, 1);
444 444
445 page = get_read_data_page(inode, index, READ_SYNC, true); 445 /* if ipage exists, blkaddr should be NEW_ADDR */
446 f2fs_bug_on(F2FS_I_SB(inode), ipage);
447 page = get_lock_data_page(inode, index, true);
446 if (IS_ERR(page)) 448 if (IS_ERR(page))
447 goto repeat; 449 return page;
448
449 /* wait for read completion */
450 lock_page(page);
451 } 450 }
452got_it: 451got_it:
453 if (new_i_size && i_size_read(inode) < 452 if (new_i_size && i_size_read(inode) <