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()
361 struct page *page = NULL; in get_node_info() local
394 page = get_current_nat_page(sbi, start_nid); in get_node_info()
395 nat_blk = (struct f2fs_nat_block *)page_address(page); in get_node_info()
398 f2fs_put_page(page, 1); in get_node_info()
491 struct page *npage[4]; in get_dnode_of_data()
492 struct page *parent = NULL; in get_dnode_of_data()
627 struct page *page; in truncate_dnode() local
633 page = get_node_page(F2FS_I_SB(dn->inode), dn->nid); in truncate_dnode()
634 if (IS_ERR(page) && PTR_ERR(page) == -ENOENT) in truncate_dnode()
636 else if (IS_ERR(page)) in truncate_dnode()
637 return PTR_ERR(page); in truncate_dnode()
640 dn->node_page = page; in truncate_dnode()
651 struct page *page; in truncate_nodes() local
663 page = get_node_page(F2FS_I_SB(dn->inode), dn->nid); in truncate_nodes()
664 if (IS_ERR(page)) { in truncate_nodes()
665 trace_f2fs_truncate_nodes_exit(dn->inode, PTR_ERR(page)); in truncate_nodes()
666 return PTR_ERR(page); in truncate_nodes()
669 rn = F2FS_NODE(page); in truncate_nodes()
679 set_nid(page, i, 0, false); in truncate_nodes()
692 set_nid(page, i, 0, false); in truncate_nodes()
703 dn->node_page = page; in truncate_nodes()
707 f2fs_put_page(page, 1); in truncate_nodes()
713 f2fs_put_page(page, 1); in truncate_nodes()
721 struct page *pages[2]; in truncate_partial_nodes()
786 struct page *page; in truncate_inode_blocks() local
792 page = get_node_page(sbi, inode->i_ino); in truncate_inode_blocks()
793 if (IS_ERR(page)) { in truncate_inode_blocks()
794 trace_f2fs_truncate_inode_blocks_exit(inode, PTR_ERR(page)); in truncate_inode_blocks()
795 return PTR_ERR(page); in truncate_inode_blocks()
798 set_new_dnode(&dn, inode, page, NULL, 0); in truncate_inode_blocks()
799 unlock_page(page); in truncate_inode_blocks()
801 ri = F2FS_INODE(page); in truncate_inode_blocks()
854 lock_page(page); in truncate_inode_blocks()
855 if (unlikely(page->mapping != NODE_MAPPING(sbi))) { in truncate_inode_blocks()
856 f2fs_put_page(page, 1); in truncate_inode_blocks()
859 f2fs_wait_on_page_writeback(page, NODE); in truncate_inode_blocks()
861 set_page_dirty(page); in truncate_inode_blocks()
862 unlock_page(page); in truncate_inode_blocks()
869 f2fs_put_page(page, 0); in truncate_inode_blocks()
874 int truncate_xattr_node(struct inode *inode, struct page *page) in truncate_xattr_node() argument
879 struct page *npage; in truncate_xattr_node()
893 set_new_dnode(&dn, inode, page, npage, nid); in truncate_xattr_node()
895 if (page) in truncate_xattr_node()
935 struct page *new_inode_page(struct inode *inode) in new_inode_page()
946 struct page *new_node_page(struct dnode_of_data *dn, in new_node_page()
947 unsigned int ofs, struct page *ipage) in new_node_page()
951 struct page *page; in new_node_page() local
957 page = grab_cache_page(NODE_MAPPING(sbi), dn->nid); in new_node_page()
958 if (!page) in new_node_page()
974 f2fs_wait_on_page_writeback(page, NODE); in new_node_page()
975 fill_node_footer(page, dn->nid, dn->inode->i_ino, ofs, true); in new_node_page()
976 set_cold_node(dn->inode, page); in new_node_page()
977 SetPageUptodate(page); in new_node_page()
978 set_page_dirty(page); in new_node_page()
983 dn->node_page = page; in new_node_page()
991 return page; in new_node_page()
994 clear_node_page_dirty(page); in new_node_page()
995 f2fs_put_page(page, 1); in new_node_page()
1004 static int read_node_page(struct page *page, int rw) in read_node_page() argument
1006 struct f2fs_sb_info *sbi = F2FS_P_SB(page); in read_node_page()
1012 .page = page, in read_node_page()
1016 get_node_info(sbi, page->index, &ni); in read_node_page()
1019 ClearPageUptodate(page); in read_node_page()
1023 if (PageUptodate(page)) in read_node_page()
1035 struct page *apage; in ra_node_page()
1053 struct page *get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid) in get_node_page()
1055 struct page *page; in get_node_page() local
1058 page = grab_cache_page(NODE_MAPPING(sbi), nid); in get_node_page()
1059 if (!page) in get_node_page()
1062 err = read_node_page(page, READ_SYNC); in get_node_page()
1064 f2fs_put_page(page, 1); in get_node_page()
1067 lock_page(page); in get_node_page()
1070 if (unlikely(!PageUptodate(page) || nid != nid_of_node(page))) { in get_node_page()
1071 ClearPageUptodate(page); in get_node_page()
1072 f2fs_put_page(page, 1); in get_node_page()
1075 if (unlikely(page->mapping != NODE_MAPPING(sbi))) { in get_node_page()
1076 f2fs_put_page(page, 1); in get_node_page()
1079 return page; in get_node_page()
1086 struct page *get_node_page_ra(struct page *parent, int start) in get_node_page_ra()
1090 struct page *page; in get_node_page_ra() local
1099 page = grab_cache_page(NODE_MAPPING(sbi), nid); in get_node_page_ra()
1100 if (!page) in get_node_page_ra()
1103 err = read_node_page(page, READ_SYNC); in get_node_page_ra()
1105 f2fs_put_page(page, 1); in get_node_page_ra()
1125 lock_page(page); in get_node_page_ra()
1126 if (unlikely(page->mapping != NODE_MAPPING(sbi))) { in get_node_page_ra()
1127 f2fs_put_page(page, 1); in get_node_page_ra()
1131 if (unlikely(!PageUptodate(page))) { in get_node_page_ra()
1132 f2fs_put_page(page, 1); in get_node_page_ra()
1135 return page; in get_node_page_ra()
1176 struct page *page = pvec.pages[i]; in sync_node_pages() local
1184 if (step == 0 && IS_DNODE(page)) in sync_node_pages()
1186 if (step == 1 && (!IS_DNODE(page) || in sync_node_pages()
1187 is_cold_node(page))) in sync_node_pages()
1189 if (step == 2 && (!IS_DNODE(page) || in sync_node_pages()
1190 !is_cold_node(page))) in sync_node_pages()
1197 if (ino && ino_of_node(page) == ino) in sync_node_pages()
1198 lock_page(page); in sync_node_pages()
1199 else if (!trylock_page(page)) in sync_node_pages()
1202 if (unlikely(page->mapping != NODE_MAPPING(sbi))) { in sync_node_pages()
1204 unlock_page(page); in sync_node_pages()
1207 if (ino && ino_of_node(page) != ino) in sync_node_pages()
1210 if (!PageDirty(page)) { in sync_node_pages()
1215 if (!clear_page_dirty_for_io(page)) in sync_node_pages()
1219 if (ino && IS_DNODE(page)) { in sync_node_pages()
1220 set_fsync_mark(page, 1); in sync_node_pages()
1221 if (IS_INODE(page)) in sync_node_pages()
1222 set_dentry_mark(page, in sync_node_pages()
1226 set_fsync_mark(page, 0); in sync_node_pages()
1227 set_dentry_mark(page, 0); in sync_node_pages()
1230 if (NODE_MAPPING(sbi)->a_ops->writepage(page, wbc)) in sync_node_pages()
1231 unlock_page(page); in sync_node_pages()
1274 struct page *page = pvec.pages[i]; in wait_on_node_pages_writeback() local
1277 if (unlikely(page->index > end)) in wait_on_node_pages_writeback()
1280 if (ino && ino_of_node(page) == ino) { in wait_on_node_pages_writeback()
1281 f2fs_wait_on_page_writeback(page, NODE); in wait_on_node_pages_writeback()
1282 if (TestClearPageError(page)) in wait_on_node_pages_writeback()
1299 static int f2fs_write_node_page(struct page *page, in f2fs_write_node_page() argument
1302 struct f2fs_sb_info *sbi = F2FS_P_SB(page); in f2fs_write_node_page()
1309 .page = page, in f2fs_write_node_page()
1313 trace_f2fs_writepage(page, NODE); in f2fs_write_node_page()
1320 f2fs_wait_on_page_writeback(page, NODE); in f2fs_write_node_page()
1323 nid = nid_of_node(page); in f2fs_write_node_page()
1324 f2fs_bug_on(sbi, page->index != nid); in f2fs_write_node_page()
1337 ClearPageUptodate(page); in f2fs_write_node_page()
1340 unlock_page(page); in f2fs_write_node_page()
1344 set_page_writeback(page); in f2fs_write_node_page()
1347 set_node_addr(sbi, &ni, fio.blk_addr, is_fsync_dnode(page)); in f2fs_write_node_page()
1350 unlock_page(page); in f2fs_write_node_page()
1358 redirty_page_for_writepage(wbc, page); in f2fs_write_node_page()
1388 static int f2fs_set_node_page_dirty(struct page *page) in f2fs_set_node_page_dirty() argument
1390 trace_f2fs_set_page_dirty(page, NODE); in f2fs_set_node_page_dirty()
1392 SetPageUptodate(page); in f2fs_set_node_page_dirty()
1393 if (!PageDirty(page)) { in f2fs_set_node_page_dirty()
1394 __set_page_dirty_nobuffers(page); in f2fs_set_node_page_dirty()
1395 inc_page_count(F2FS_P_SB(page), F2FS_DIRTY_NODES); in f2fs_set_node_page_dirty()
1396 SetPagePrivate(page); in f2fs_set_node_page_dirty()
1397 f2fs_trace_pid(page); in f2fs_set_node_page_dirty()
1496 struct page *nat_page, nid_t start_nid) in scan_nat_page()
1536 struct page *page = get_current_nat_page(sbi, nid); in build_free_nids() local
1538 scan_nat_page(sbi, page, nid); in build_free_nids()
1539 f2fs_put_page(page, 1); in build_free_nids()
1686 void recover_inline_xattr(struct inode *inode, struct page *page) in recover_inline_xattr() argument
1690 struct page *ipage; in recover_inline_xattr()
1696 ri = F2FS_INODE(page); in recover_inline_xattr()
1703 src_addr = inline_xattr_addr(page); in recover_inline_xattr()
1713 void recover_xattr_data(struct inode *inode, struct page *page, block_t blkaddr) in recover_xattr_data() argument
1717 nid_t new_xnid = nid_of_node(page); in recover_xattr_data()
1749 int recover_inode_page(struct f2fs_sb_info *sbi, struct page *page) in recover_inode_page() argument
1752 nid_t ino = ino_of_node(page); in recover_inode_page()
1754 struct page *ipage; in recover_inode_page()
1771 src = F2FS_INODE(page); in recover_inode_page()
1814 struct page *page = get_tmp_page(sbi, idx); in restore_node_summary() local
1816 rn = F2FS_NODE(page); in restore_node_summary()
1821 f2fs_put_page(page, 1); in restore_node_summary()
1885 struct page *page = NULL; in __flush_nat_entry_set() local
1899 page = get_next_nat_page(sbi, start_nid); in __flush_nat_entry_set()
1900 nat_blk = page_address(page); in __flush_nat_entry_set()
1936 f2fs_put_page(page, 1); in __flush_nat_entry_set()