Loading fs/f2fs/checkpoint.c +3 −1 Original line number Diff line number Diff line Loading @@ -69,8 +69,10 @@ struct page *get_meta_page(struct f2fs_sb_info *sbi, pgoff_t index) fio.page = page; if (f2fs_submit_page_bio(&fio)) if (f2fs_submit_page_bio(&fio)) { f2fs_put_page(page, 1); goto repeat; } lock_page(page); if (unlikely(page->mapping != mapping)) { Loading fs/f2fs/data.c +13 −14 Original line number Diff line number Diff line Loading @@ -156,7 +156,6 @@ int f2fs_submit_page_bio(struct f2fs_io_info *fio) if (bio_add_page(bio, page, PAGE_CACHE_SIZE, 0) < PAGE_CACHE_SIZE) { bio_put(bio); f2fs_put_page(page, 1); return -EFAULT; } Loading Loading @@ -292,15 +291,13 @@ struct page *get_read_data_page(struct inode *inode, pgoff_t index, int rw) set_new_dnode(&dn, inode, NULL, NULL, 0); err = get_dnode_of_data(&dn, index, LOOKUP_NODE); if (err) { f2fs_put_page(page, 1); return ERR_PTR(err); } if (err) goto put_err; f2fs_put_dnode(&dn); if (unlikely(dn.data_blkaddr == NULL_ADDR)) { f2fs_put_page(page, 1); return ERR_PTR(-ENOENT); err = -ENOENT; goto put_err; } got_it: if (PageUptodate(page)) { Loading @@ -325,8 +322,12 @@ struct page *get_read_data_page(struct inode *inode, pgoff_t index, int rw) fio.page = page; err = f2fs_submit_page_bio(&fio); if (err) return ERR_PTR(err); goto put_err; return page; put_err: f2fs_put_page(page, 1); return ERR_PTR(err); } struct page *find_data_page(struct inode *inode, pgoff_t index) Loading Loading @@ -1322,7 +1323,8 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping, { struct inode *inode = mapping->host; struct f2fs_sb_info *sbi = F2FS_I_SB(inode); struct page *page, *ipage; struct page *page = NULL; struct page *ipage; pgoff_t index = ((unsigned long long) pos) >> PAGE_CACHE_SHIFT; struct dnode_of_data dn; int err = 0; Loading Loading @@ -1412,7 +1414,6 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping, lock_page(page); if (unlikely(!PageUptodate(page))) { f2fs_put_page(page, 1); err = -EIO; goto fail; } Loading @@ -1424,12 +1425,10 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping, /* avoid symlink page */ if (f2fs_encrypted_inode(inode) && S_ISREG(inode->i_mode)) { err = f2fs_decrypt_one(inode, page); if (err) { f2fs_put_page(page, 1); if (err) goto fail; } } } out_update: SetPageUptodate(page); out_clear: Loading @@ -1440,8 +1439,8 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping, f2fs_put_dnode(&dn); unlock_fail: f2fs_unlock_op(sbi); f2fs_put_page(page, 1); fail: f2fs_put_page(page, 1); f2fs_write_failed(mapping, pos + len); return err; } Loading fs/f2fs/node.c +10 −11 Original line number Diff line number Diff line Loading @@ -991,8 +991,7 @@ struct page *new_node_page(struct dnode_of_data *dn, /* * Caller should do after getting the following values. * 0: f2fs_put_page(page, 0) * LOCKED_PAGE: f2fs_put_page(page, 1) * error: nothing * LOCKED_PAGE or error: f2fs_put_page(page, 1) */ static int read_node_page(struct page *page, int rw) { Loading @@ -1010,7 +1009,6 @@ static int read_node_page(struct page *page, int rw) if (unlikely(ni.blk_addr == NULL_ADDR)) { ClearPageUptodate(page); f2fs_put_page(page, 1); return -ENOENT; } Loading Loading @@ -1041,10 +1039,7 @@ void ra_node_page(struct f2fs_sb_info *sbi, nid_t nid) return; err = read_node_page(apage, READA); if (err == 0) f2fs_put_page(apage, 0); else if (err == LOCKED_PAGE) f2fs_put_page(apage, 1); f2fs_put_page(apage, err ? 1 : 0); } struct page *get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid) Loading @@ -1057,10 +1052,12 @@ struct page *get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid) return ERR_PTR(-ENOMEM); err = read_node_page(page, READ_SYNC); if (err < 0) if (err < 0) { f2fs_put_page(page, 1); return ERR_PTR(err); else if (err != LOCKED_PAGE) } else if (err != LOCKED_PAGE) { lock_page(page); } if (unlikely(!PageUptodate(page) || nid != nid_of_node(page))) { ClearPageUptodate(page); Loading Loading @@ -1096,10 +1093,12 @@ struct page *get_node_page_ra(struct page *parent, int start) return ERR_PTR(-ENOMEM); err = read_node_page(page, READ_SYNC); if (err < 0) if (err < 0) { f2fs_put_page(page, 1); return ERR_PTR(err); else if (err == LOCKED_PAGE) } else if (err == LOCKED_PAGE) { goto page_hit; } blk_start_plug(&plug); Loading Loading
fs/f2fs/checkpoint.c +3 −1 Original line number Diff line number Diff line Loading @@ -69,8 +69,10 @@ struct page *get_meta_page(struct f2fs_sb_info *sbi, pgoff_t index) fio.page = page; if (f2fs_submit_page_bio(&fio)) if (f2fs_submit_page_bio(&fio)) { f2fs_put_page(page, 1); goto repeat; } lock_page(page); if (unlikely(page->mapping != mapping)) { Loading
fs/f2fs/data.c +13 −14 Original line number Diff line number Diff line Loading @@ -156,7 +156,6 @@ int f2fs_submit_page_bio(struct f2fs_io_info *fio) if (bio_add_page(bio, page, PAGE_CACHE_SIZE, 0) < PAGE_CACHE_SIZE) { bio_put(bio); f2fs_put_page(page, 1); return -EFAULT; } Loading Loading @@ -292,15 +291,13 @@ struct page *get_read_data_page(struct inode *inode, pgoff_t index, int rw) set_new_dnode(&dn, inode, NULL, NULL, 0); err = get_dnode_of_data(&dn, index, LOOKUP_NODE); if (err) { f2fs_put_page(page, 1); return ERR_PTR(err); } if (err) goto put_err; f2fs_put_dnode(&dn); if (unlikely(dn.data_blkaddr == NULL_ADDR)) { f2fs_put_page(page, 1); return ERR_PTR(-ENOENT); err = -ENOENT; goto put_err; } got_it: if (PageUptodate(page)) { Loading @@ -325,8 +322,12 @@ struct page *get_read_data_page(struct inode *inode, pgoff_t index, int rw) fio.page = page; err = f2fs_submit_page_bio(&fio); if (err) return ERR_PTR(err); goto put_err; return page; put_err: f2fs_put_page(page, 1); return ERR_PTR(err); } struct page *find_data_page(struct inode *inode, pgoff_t index) Loading Loading @@ -1322,7 +1323,8 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping, { struct inode *inode = mapping->host; struct f2fs_sb_info *sbi = F2FS_I_SB(inode); struct page *page, *ipage; struct page *page = NULL; struct page *ipage; pgoff_t index = ((unsigned long long) pos) >> PAGE_CACHE_SHIFT; struct dnode_of_data dn; int err = 0; Loading Loading @@ -1412,7 +1414,6 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping, lock_page(page); if (unlikely(!PageUptodate(page))) { f2fs_put_page(page, 1); err = -EIO; goto fail; } Loading @@ -1424,12 +1425,10 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping, /* avoid symlink page */ if (f2fs_encrypted_inode(inode) && S_ISREG(inode->i_mode)) { err = f2fs_decrypt_one(inode, page); if (err) { f2fs_put_page(page, 1); if (err) goto fail; } } } out_update: SetPageUptodate(page); out_clear: Loading @@ -1440,8 +1439,8 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping, f2fs_put_dnode(&dn); unlock_fail: f2fs_unlock_op(sbi); f2fs_put_page(page, 1); fail: f2fs_put_page(page, 1); f2fs_write_failed(mapping, pos + len); return err; } Loading
fs/f2fs/node.c +10 −11 Original line number Diff line number Diff line Loading @@ -991,8 +991,7 @@ struct page *new_node_page(struct dnode_of_data *dn, /* * Caller should do after getting the following values. * 0: f2fs_put_page(page, 0) * LOCKED_PAGE: f2fs_put_page(page, 1) * error: nothing * LOCKED_PAGE or error: f2fs_put_page(page, 1) */ static int read_node_page(struct page *page, int rw) { Loading @@ -1010,7 +1009,6 @@ static int read_node_page(struct page *page, int rw) if (unlikely(ni.blk_addr == NULL_ADDR)) { ClearPageUptodate(page); f2fs_put_page(page, 1); return -ENOENT; } Loading Loading @@ -1041,10 +1039,7 @@ void ra_node_page(struct f2fs_sb_info *sbi, nid_t nid) return; err = read_node_page(apage, READA); if (err == 0) f2fs_put_page(apage, 0); else if (err == LOCKED_PAGE) f2fs_put_page(apage, 1); f2fs_put_page(apage, err ? 1 : 0); } struct page *get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid) Loading @@ -1057,10 +1052,12 @@ struct page *get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid) return ERR_PTR(-ENOMEM); err = read_node_page(page, READ_SYNC); if (err < 0) if (err < 0) { f2fs_put_page(page, 1); return ERR_PTR(err); else if (err != LOCKED_PAGE) } else if (err != LOCKED_PAGE) { lock_page(page); } if (unlikely(!PageUptodate(page) || nid != nid_of_node(page))) { ClearPageUptodate(page); Loading Loading @@ -1096,10 +1093,12 @@ struct page *get_node_page_ra(struct page *parent, int start) return ERR_PTR(-ENOMEM); err = read_node_page(page, READ_SYNC); if (err < 0) if (err < 0) { f2fs_put_page(page, 1); return ERR_PTR(err); else if (err == LOCKED_PAGE) } else if (err == LOCKED_PAGE) { goto page_hit; } blk_start_plug(&plug); Loading