Lines Matching refs:folio
52 folio_end_read(fi.folio, err == 0); in mpage_read_end_io()
64 mapping_set_error(fi.folio->mapping, err); in mpage_write_end_io()
65 folio_end_writeback(fi.folio); in mpage_write_end_io()
97 static void map_buffer_to_folio(struct folio *folio, struct buffer_head *bh, in map_buffer_to_folio() argument
100 struct inode *inode = folio->mapping->host; in map_buffer_to_folio()
104 head = folio_buffers(folio); in map_buffer_to_folio()
110 if (inode->i_blkbits == folio_shift(folio) && in map_buffer_to_folio()
112 folio_mark_uptodate(folio); in map_buffer_to_folio()
115 head = create_empty_buffers(folio, i_blocksize(inode), 0); in map_buffer_to_folio()
133 struct folio *folio; member
153 struct folio *folio = args->folio; in do_mpage_readpage() local
154 struct inode *inode = folio->mapping->host; in do_mpage_readpage()
156 const unsigned blocks_per_folio = folio_size(folio) >> blkbits; in do_mpage_readpage()
171 gfp_t gfp = mapping_gfp_constraint(folio->mapping, GFP_KERNEL); in do_mpage_readpage()
178 if (folio_buffers(folio)) in do_mpage_readpage()
181 block_in_file = folio_pos(folio) >> blkbits; in do_mpage_readpage()
215 map_bh->b_folio = folio; in do_mpage_readpage()
243 map_buffer_to_folio(folio, map_bh, page_block); in do_mpage_readpage()
269 folio_zero_segment(folio, first_hole << blkbits, folio_size(folio)); in do_mpage_readpage()
271 folio_mark_uptodate(folio); in do_mpage_readpage()
272 folio_unlock(folio); in do_mpage_readpage()
276 folio_set_mappedtodisk(folio); in do_mpage_readpage()
295 if (!bio_add_folio(args->bio, folio, length, 0)) { in do_mpage_readpage()
313 if (!folio_test_uptodate(folio)) in do_mpage_readpage()
314 block_read_full_folio(folio, args->get_block); in do_mpage_readpage()
316 folio_unlock(folio); in do_mpage_readpage()
361 struct folio *folio; in mpage_readahead() local
367 while ((folio = readahead_folio(rac))) { in mpage_readahead()
368 prefetchw(&folio->flags); in mpage_readahead()
369 args.folio = folio; in mpage_readahead()
381 int mpage_read_folio(struct folio *folio, get_block_t get_block) in mpage_read_folio() argument
384 .folio = folio, in mpage_read_folio()
385 .nr_pages = folio_nr_pages(folio), in mpage_read_folio()
423 static void clean_buffers(struct folio *folio, unsigned first_unmapped) in clean_buffers() argument
426 struct buffer_head *bh, *head = folio_buffers(folio); in clean_buffers()
444 if (buffer_heads_over_limit && folio_test_uptodate(folio)) in clean_buffers()
445 try_to_free_buffers(folio); in clean_buffers()
448 static int mpage_write_folio(struct writeback_control *wbc, struct folio *folio, in mpage_write_folio() argument
452 struct address_space *mapping = folio->mapping; in mpage_write_folio()
455 const unsigned blocks_per_folio = folio_size(folio) >> blkbits; in mpage_write_folio()
469 struct buffer_head *head = folio_buffers(folio); in mpage_write_folio()
525 BUG_ON(!folio_test_uptodate(folio)); in mpage_write_folio()
526 block_in_file = folio_pos(folio) >> blkbits; in mpage_write_folio()
534 map_bh.b_folio = folio; in mpage_write_folio()
568 if (folio_pos(folio) >= i_size) in mpage_write_folio()
570 length = folio_size(folio); in mpage_write_folio()
571 if (folio_pos(folio) + length > i_size) { in mpage_write_folio()
580 length = i_size - folio_pos(folio); in mpage_write_folio()
581 folio_zero_segment(folio, length, folio_size(folio)); in mpage_write_folio()
605 wbc_account_cgroup_owner(wbc, folio, folio_size(folio)); in mpage_write_folio()
607 if (!bio_add_folio(bio, folio, length, 0)) { in mpage_write_folio()
612 clean_buffers(folio, first_unmapped); in mpage_write_folio()
614 BUG_ON(folio_test_writeback(folio)); in mpage_write_folio()
615 folio_start_writeback(folio); in mpage_write_folio()
616 folio_unlock(folio); in mpage_write_folio()
635 ret = block_write_full_folio(folio, wbc, mpd->get_block); in mpage_write_folio()
658 struct folio *folio = NULL; in mpage_writepages() local
663 while ((folio = writeback_iter(mapping, wbc, folio, &error))) in mpage_writepages()
664 error = mpage_write_folio(wbc, folio, &mpd); in mpage_writepages()