|
@@ -1157,6 +1157,7 @@ repeat:
|
|
|
f2fs_put_page(page, 1);
|
|
|
return ERR_PTR(err);
|
|
|
} else if (err == LOCKED_PAGE) {
|
|
|
+ err = 0;
|
|
|
goto page_hit;
|
|
|
}
|
|
|
|
|
@@ -1170,15 +1171,22 @@ repeat:
|
|
|
goto repeat;
|
|
|
}
|
|
|
|
|
|
- if (unlikely(!PageUptodate(page)))
|
|
|
+ if (unlikely(!PageUptodate(page))) {
|
|
|
+ err = -EIO;
|
|
|
goto out_err;
|
|
|
+ }
|
|
|
page_hit:
|
|
|
if(unlikely(nid != nid_of_node(page))) {
|
|
|
- f2fs_bug_on(sbi, 1);
|
|
|
+ f2fs_msg(sbi->sb, KERN_WARNING, "inconsistent node block, "
|
|
|
+ "nid:%lu, node_footer[nid:%u,ino:%u,ofs:%u,cpver:%llu,blkaddr:%u]",
|
|
|
+ nid, nid_of_node(page), ino_of_node(page),
|
|
|
+ ofs_of_node(page), cpver_of_node(page),
|
|
|
+ next_blkaddr_of_node(page));
|
|
|
ClearPageUptodate(page);
|
|
|
+ err = -EINVAL;
|
|
|
out_err:
|
|
|
f2fs_put_page(page, 1);
|
|
|
- return ERR_PTR(-EIO);
|
|
|
+ return ERR_PTR(err);
|
|
|
}
|
|
|
return page;
|
|
|
}
|