Lines Matching refs:page
79 static void clear_node_page_dirty(struct page *page) in clear_node_page_dirty() argument
81 struct address_space *mapping = page->mapping; in clear_node_page_dirty()
84 if (PageDirty(page)) { in clear_node_page_dirty()
87 page_index(page), in clear_node_page_dirty()
91 clear_page_dirty_for_io(page); in clear_node_page_dirty()
94 ClearPageUptodate(page); in clear_node_page_dirty()
97 static struct page *get_current_nat_page(struct f2fs_sb_info *sbi, nid_t nid) in get_current_nat_page()
103 static struct page *get_next_nat_page(struct f2fs_sb_info *sbi, nid_t nid) in get_next_nat_page()
105 struct page *src_page; in get_next_nat_page()
106 struct page *dst_page; in get_next_nat_page()
353 struct page *page = NULL; in get_node_info() local
386 page = get_current_nat_page(sbi, start_nid); in get_node_info()
387 nat_blk = (struct f2fs_nat_block *)page_address(page); in get_node_info()
390 f2fs_put_page(page, 1); in get_node_info()
483 struct page *npage[4]; in get_dnode_of_data()
484 struct page *parent = NULL; in get_dnode_of_data()
619 struct page *page; in truncate_dnode() local
625 page = get_node_page(F2FS_I_SB(dn->inode), dn->nid); in truncate_dnode()
626 if (IS_ERR(page) && PTR_ERR(page) == -ENOENT) in truncate_dnode()
628 else if (IS_ERR(page)) in truncate_dnode()
629 return PTR_ERR(page); in truncate_dnode()
632 dn->node_page = page; in truncate_dnode()
643 struct page *page; in truncate_nodes() local
655 page = get_node_page(F2FS_I_SB(dn->inode), dn->nid); in truncate_nodes()
656 if (IS_ERR(page)) { in truncate_nodes()
657 trace_f2fs_truncate_nodes_exit(dn->inode, PTR_ERR(page)); in truncate_nodes()
658 return PTR_ERR(page); in truncate_nodes()
661 rn = F2FS_NODE(page); in truncate_nodes()
671 set_nid(page, i, 0, false); in truncate_nodes()
684 set_nid(page, i, 0, false); in truncate_nodes()
695 dn->node_page = page; in truncate_nodes()
699 f2fs_put_page(page, 1); in truncate_nodes()
705 f2fs_put_page(page, 1); in truncate_nodes()
713 struct page *pages[2]; in truncate_partial_nodes()
778 struct page *page; in truncate_inode_blocks() local
784 page = get_node_page(sbi, inode->i_ino); in truncate_inode_blocks()
785 if (IS_ERR(page)) { in truncate_inode_blocks()
786 trace_f2fs_truncate_inode_blocks_exit(inode, PTR_ERR(page)); in truncate_inode_blocks()
787 return PTR_ERR(page); in truncate_inode_blocks()
790 set_new_dnode(&dn, inode, page, NULL, 0); in truncate_inode_blocks()
791 unlock_page(page); in truncate_inode_blocks()
793 ri = F2FS_INODE(page); in truncate_inode_blocks()
846 lock_page(page); in truncate_inode_blocks()
847 if (unlikely(page->mapping != NODE_MAPPING(sbi))) { in truncate_inode_blocks()
848 f2fs_put_page(page, 1); in truncate_inode_blocks()
851 f2fs_wait_on_page_writeback(page, NODE); in truncate_inode_blocks()
853 set_page_dirty(page); in truncate_inode_blocks()
854 unlock_page(page); in truncate_inode_blocks()
861 f2fs_put_page(page, 0); in truncate_inode_blocks()
866 int truncate_xattr_node(struct inode *inode, struct page *page) in truncate_xattr_node() argument
871 struct page *npage; in truncate_xattr_node()
885 set_new_dnode(&dn, inode, page, npage, nid); in truncate_xattr_node()
887 if (page) in truncate_xattr_node()
923 struct page *new_inode_page(struct inode *inode) in new_inode_page()
934 struct page *new_node_page(struct dnode_of_data *dn, in new_node_page()
935 unsigned int ofs, struct page *ipage) in new_node_page()
939 struct page *page; in new_node_page() local
945 page = grab_cache_page(NODE_MAPPING(sbi), dn->nid); in new_node_page()
946 if (!page) in new_node_page()
962 f2fs_wait_on_page_writeback(page, NODE); in new_node_page()
963 fill_node_footer(page, dn->nid, dn->inode->i_ino, ofs, true); in new_node_page()
964 set_cold_node(dn->inode, page); in new_node_page()
965 SetPageUptodate(page); in new_node_page()
966 set_page_dirty(page); in new_node_page()
971 dn->node_page = page; in new_node_page()
979 return page; in new_node_page()
982 clear_node_page_dirty(page); in new_node_page()
983 f2fs_put_page(page, 1); in new_node_page()
993 static int read_node_page(struct page *page, int rw) in read_node_page() argument
995 struct f2fs_sb_info *sbi = F2FS_P_SB(page); in read_node_page()
1002 get_node_info(sbi, page->index, &ni); in read_node_page()
1005 ClearPageUptodate(page); in read_node_page()
1006 f2fs_put_page(page, 1); in read_node_page()
1010 if (PageUptodate(page)) in read_node_page()
1014 return f2fs_submit_page_bio(sbi, page, &fio); in read_node_page()
1022 struct page *apage; in ra_node_page()
1043 struct page *get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid) in get_node_page()
1045 struct page *page; in get_node_page() local
1048 page = grab_cache_page(NODE_MAPPING(sbi), nid); in get_node_page()
1049 if (!page) in get_node_page()
1052 err = read_node_page(page, READ_SYNC); in get_node_page()
1056 lock_page(page); in get_node_page()
1058 if (unlikely(!PageUptodate(page) || nid != nid_of_node(page))) { in get_node_page()
1059 ClearPageUptodate(page); in get_node_page()
1060 f2fs_put_page(page, 1); in get_node_page()
1063 if (unlikely(page->mapping != NODE_MAPPING(sbi))) { in get_node_page()
1064 f2fs_put_page(page, 1); in get_node_page()
1067 return page; in get_node_page()
1074 struct page *get_node_page_ra(struct page *parent, int start) in get_node_page_ra()
1078 struct page *page; in get_node_page_ra() local
1087 page = grab_cache_page(NODE_MAPPING(sbi), nid); in get_node_page_ra()
1088 if (!page) in get_node_page_ra()
1091 err = read_node_page(page, READ_SYNC); in get_node_page_ra()
1111 lock_page(page); in get_node_page_ra()
1112 if (unlikely(page->mapping != NODE_MAPPING(sbi))) { in get_node_page_ra()
1113 f2fs_put_page(page, 1); in get_node_page_ra()
1117 if (unlikely(!PageUptodate(page))) { in get_node_page_ra()
1118 f2fs_put_page(page, 1); in get_node_page_ra()
1121 return page; in get_node_page_ra()
1162 struct page *page = pvec.pages[i]; in sync_node_pages() local
1170 if (step == 0 && IS_DNODE(page)) in sync_node_pages()
1172 if (step == 1 && (!IS_DNODE(page) || in sync_node_pages()
1173 is_cold_node(page))) in sync_node_pages()
1175 if (step == 2 && (!IS_DNODE(page) || in sync_node_pages()
1176 !is_cold_node(page))) in sync_node_pages()
1183 if (ino && ino_of_node(page) == ino) in sync_node_pages()
1184 lock_page(page); in sync_node_pages()
1185 else if (!trylock_page(page)) in sync_node_pages()
1188 if (unlikely(page->mapping != NODE_MAPPING(sbi))) { in sync_node_pages()
1190 unlock_page(page); in sync_node_pages()
1193 if (ino && ino_of_node(page) != ino) in sync_node_pages()
1196 if (!PageDirty(page)) { in sync_node_pages()
1201 if (!clear_page_dirty_for_io(page)) in sync_node_pages()
1205 if (ino && IS_DNODE(page)) { in sync_node_pages()
1206 set_fsync_mark(page, 1); in sync_node_pages()
1207 if (IS_INODE(page)) { in sync_node_pages()
1210 set_dentry_mark(page, 1); in sync_node_pages()
1212 set_dentry_mark(page, 0); in sync_node_pages()
1216 set_fsync_mark(page, 0); in sync_node_pages()
1217 set_dentry_mark(page, 0); in sync_node_pages()
1220 if (NODE_MAPPING(sbi)->a_ops->writepage(page, wbc)) in sync_node_pages()
1221 unlock_page(page); in sync_node_pages()
1264 struct page *page = pvec.pages[i]; in wait_on_node_pages_writeback() local
1267 if (unlikely(page->index > end)) in wait_on_node_pages_writeback()
1270 if (ino && ino_of_node(page) == ino) { in wait_on_node_pages_writeback()
1271 f2fs_wait_on_page_writeback(page, NODE); in wait_on_node_pages_writeback()
1272 if (TestClearPageError(page)) in wait_on_node_pages_writeback()
1289 static int f2fs_write_node_page(struct page *page, in f2fs_write_node_page() argument
1292 struct f2fs_sb_info *sbi = F2FS_P_SB(page); in f2fs_write_node_page()
1300 trace_f2fs_writepage(page, NODE); in f2fs_write_node_page()
1307 f2fs_wait_on_page_writeback(page, NODE); in f2fs_write_node_page()
1310 nid = nid_of_node(page); in f2fs_write_node_page()
1311 f2fs_bug_on(sbi, page->index != nid); in f2fs_write_node_page()
1317 ClearPageUptodate(page); in f2fs_write_node_page()
1319 unlock_page(page); in f2fs_write_node_page()
1330 set_page_writeback(page); in f2fs_write_node_page()
1332 write_node_page(sbi, page, nid, &fio); in f2fs_write_node_page()
1333 set_node_addr(sbi, &ni, fio.blk_addr, is_fsync_dnode(page)); in f2fs_write_node_page()
1336 unlock_page(page); in f2fs_write_node_page()
1344 redirty_page_for_writepage(wbc, page); in f2fs_write_node_page()
1374 static int f2fs_set_node_page_dirty(struct page *page) in f2fs_set_node_page_dirty() argument
1376 trace_f2fs_set_page_dirty(page, NODE); in f2fs_set_node_page_dirty()
1378 SetPageUptodate(page); in f2fs_set_node_page_dirty()
1379 if (!PageDirty(page)) { in f2fs_set_node_page_dirty()
1380 __set_page_dirty_nobuffers(page); in f2fs_set_node_page_dirty()
1381 inc_page_count(F2FS_P_SB(page), F2FS_DIRTY_NODES); in f2fs_set_node_page_dirty()
1382 SetPagePrivate(page); in f2fs_set_node_page_dirty()
1383 f2fs_trace_pid(page); in f2fs_set_node_page_dirty()
1482 struct page *nat_page, nid_t start_nid) in scan_nat_page()
1521 struct page *page = get_current_nat_page(sbi, nid); in build_free_nids() local
1523 scan_nat_page(sbi, page, nid); in build_free_nids()
1524 f2fs_put_page(page, 1); in build_free_nids()
1633 void recover_inline_xattr(struct inode *inode, struct page *page) in recover_inline_xattr() argument
1637 struct page *ipage; in recover_inline_xattr()
1643 ri = F2FS_INODE(page); in recover_inline_xattr()
1650 src_addr = inline_xattr_addr(page); in recover_inline_xattr()
1660 void recover_xattr_data(struct inode *inode, struct page *page, block_t blkaddr) in recover_xattr_data() argument
1664 nid_t new_xnid = nid_of_node(page); in recover_xattr_data()
1696 int recover_inode_page(struct f2fs_sb_info *sbi, struct page *page) in recover_inode_page() argument
1699 nid_t ino = ino_of_node(page); in recover_inode_page()
1701 struct page *ipage; in recover_inode_page()
1718 src = F2FS_INODE(page); in recover_inode_page()
1761 struct page *page = get_meta_page(sbi, idx); in restore_node_summary() local
1763 rn = F2FS_NODE(page); in restore_node_summary()
1768 f2fs_put_page(page, 1); in restore_node_summary()
1832 struct page *page = NULL; in __flush_nat_entry_set() local
1846 page = get_next_nat_page(sbi, start_nid); in __flush_nat_entry_set()
1847 nat_blk = page_address(page); in __flush_nat_entry_set()
1883 f2fs_put_page(page, 1); in __flush_nat_entry_set()