Lines Matching refs:folio

40 void gfs2_trans_add_databufs(struct gfs2_inode *ip, struct folio *folio,  in gfs2_trans_add_databufs()  argument
43 struct buffer_head *head = folio_buffers(folio); in gfs2_trans_add_databufs()
92 static int gfs2_write_jdata_folio(struct folio *folio, in gfs2_write_jdata_folio() argument
95 struct inode * const inode = folio->mapping->host; in gfs2_write_jdata_folio()
105 if (folio_pos(folio) < i_size && in gfs2_write_jdata_folio()
106 i_size < folio_pos(folio) + folio_size(folio)) in gfs2_write_jdata_folio()
107 folio_zero_segment(folio, offset_in_folio(folio, i_size), in gfs2_write_jdata_folio()
108 folio_size(folio)); in gfs2_write_jdata_folio()
110 return __block_write_full_folio(inode, folio, gfs2_get_block_noalloc, in gfs2_write_jdata_folio()
124 static int __gfs2_jdata_write_folio(struct folio *folio, in __gfs2_jdata_write_folio() argument
127 struct inode *inode = folio->mapping->host; in __gfs2_jdata_write_folio()
130 if (folio_test_checked(folio)) { in __gfs2_jdata_write_folio()
131 folio_clear_checked(folio); in __gfs2_jdata_write_folio()
132 if (!folio_buffers(folio)) { in __gfs2_jdata_write_folio()
133 folio_create_empty_buffers(folio, in __gfs2_jdata_write_folio()
137 gfs2_trans_add_databufs(ip, folio, 0, folio_size(folio)); in __gfs2_jdata_write_folio()
139 return gfs2_write_jdata_folio(folio, wbc); in __gfs2_jdata_write_folio()
153 struct folio *folio = page_folio(page); in gfs2_jdata_writepage() local
160 if (folio_test_checked(folio) || current->journal_info) in gfs2_jdata_writepage()
162 return __gfs2_jdata_write_folio(folio, wbc); in gfs2_jdata_writepage()
165 folio_redirty_for_writepage(wbc, folio); in gfs2_jdata_writepage()
167 folio_unlock(folio); in gfs2_jdata_writepage()
229 struct folio *folio = fbatch->folios[i]; in gfs2_write_jdata_batch() local
231 *done_index = folio->index; in gfs2_write_jdata_batch()
233 folio_lock(folio); in gfs2_write_jdata_batch()
235 if (unlikely(folio->mapping != mapping)) { in gfs2_write_jdata_batch()
237 folio_unlock(folio); in gfs2_write_jdata_batch()
241 if (!folio_test_dirty(folio)) { in gfs2_write_jdata_batch()
246 if (folio_test_writeback(folio)) { in gfs2_write_jdata_batch()
248 folio_wait_writeback(folio); in gfs2_write_jdata_batch()
253 BUG_ON(folio_test_writeback(folio)); in gfs2_write_jdata_batch()
254 if (!folio_clear_dirty_for_io(folio)) in gfs2_write_jdata_batch()
259 ret = __gfs2_jdata_write_folio(folio, wbc); in gfs2_write_jdata_batch()
262 folio_unlock(folio); in gfs2_write_jdata_batch()
275 *done_index = folio_next_index(folio); in gfs2_write_jdata_batch()
450 static int gfs2_read_folio(struct file *file, struct folio *folio) in gfs2_read_folio() argument
452 struct inode *inode = folio->mapping->host; in gfs2_read_folio()
458 (i_blocksize(inode) == PAGE_SIZE && !folio_buffers(folio))) { in gfs2_read_folio()
459 error = iomap_read_folio(folio, &gfs2_iomap_ops); in gfs2_read_folio()
461 error = stuffed_readpage(ip, &folio->page); in gfs2_read_folio()
462 folio_unlock(folio); in gfs2_read_folio()
464 error = mpage_read_folio(folio, gfs2_block_map); in gfs2_read_folio()
491 struct folio *folio; in gfs2_internal_read() local
493 folio = read_cache_folio(mapping, index, gfs2_read_folio, NULL); in gfs2_internal_read()
494 if (IS_ERR(folio)) { in gfs2_internal_read()
495 if (PTR_ERR(folio) == -EINTR) in gfs2_internal_read()
497 return PTR_ERR(folio); in gfs2_internal_read()
499 offset = *pos + copied - folio_pos(folio); in gfs2_internal_read()
500 chunk = min(size - copied, folio_size(folio) - offset); in gfs2_internal_read()
501 memcpy_from_folio(buf + copied, folio, offset, chunk); in gfs2_internal_read()
502 index = folio_next_index(folio); in gfs2_internal_read()
503 folio_put(folio); in gfs2_internal_read()
579 struct folio *folio) in jdata_dirty_folio() argument
582 folio_set_checked(folio); in jdata_dirty_folio()
583 return block_dirty_folio(mapping, folio); in jdata_dirty_folio()
638 static void gfs2_invalidate_folio(struct folio *folio, size_t offset, in gfs2_invalidate_folio() argument
641 struct gfs2_sbd *sdp = GFS2_SB(folio->mapping->host); in gfs2_invalidate_folio()
643 int partial_page = (offset || length < folio_size(folio)); in gfs2_invalidate_folio()
647 BUG_ON(!folio_test_locked(folio)); in gfs2_invalidate_folio()
649 folio_clear_checked(folio); in gfs2_invalidate_folio()
650 head = folio_buffers(folio); in gfs2_invalidate_folio()
666 filemap_release_folio(folio, 0); in gfs2_invalidate_folio()
680 bool gfs2_release_folio(struct folio *folio, gfp_t gfp_mask) in gfs2_release_folio() argument
682 struct address_space *mapping = folio->mapping; in gfs2_release_folio()
687 head = folio_buffers(folio); in gfs2_release_folio()
736 return try_to_free_buffers(folio); in gfs2_release_folio()