Lines Matching defs:folio
40 void gfs2_trans_add_databufs(struct gfs2_inode *ip, struct folio *folio,
43 struct buffer_head *head = folio_buffers(folio);
86 * @folio: The folio to write
92 static int gfs2_write_jdata_folio(struct folio *folio,
95 struct inode * const inode = folio->mapping->host;
99 * The folio straddles i_size. It must be zeroed out on each and every
105 if (folio_pos(folio) < i_size &&
106 i_size < folio_pos(folio) + folio_size(folio))
107 folio_zero_segment(folio, offset_in_folio(folio, i_size),
108 folio_size(folio));
110 return __block_write_full_folio(inode, folio, gfs2_get_block_noalloc,
116 * @folio: The folio to write
124 static int __gfs2_jdata_write_folio(struct folio *folio,
127 struct inode *inode = folio->mapping->host;
130 if (folio_test_checked(folio)) {
131 folio_clear_checked(folio);
132 if (!folio_buffers(folio)) {
133 folio_create_empty_buffers(folio,
137 gfs2_trans_add_databufs(ip, folio, 0, folio_size(folio));
139 return gfs2_write_jdata_folio(folio, wbc);
153 struct folio *folio = page_folio(page);
160 if (folio_test_checked(folio) || current->journal_info)
162 return __gfs2_jdata_write_folio(folio, wbc);
165 folio_redirty_for_writepage(wbc, folio);
167 folio_unlock(folio);
198 * gfs2_write_jdata_batch - Write back a folio batch's worth of folios
229 struct folio *folio = fbatch->folios[i];
231 *done_index = folio->index;
233 folio_lock(folio);
235 if (unlikely(folio->mapping != mapping)) {
237 folio_unlock(folio);
241 if (!folio_test_dirty(folio)) {
246 if (folio_test_writeback(folio)) {
248 folio_wait_writeback(folio);
253 BUG_ON(folio_test_writeback(folio));
254 if (!folio_clear_dirty_for_io(folio))
259 ret = __gfs2_jdata_write_folio(folio, wbc);
262 folio_unlock(folio);
275 *done_index = folio_next_index(folio);
446 * gfs2_read_folio - read a folio from a file
448 * @folio: The folio in the file
450 static int gfs2_read_folio(struct file *file, struct folio *folio)
452 struct inode *inode = folio->mapping->host;
458 (i_blocksize(inode) == PAGE_SIZE && !folio_buffers(folio))) {
459 error = iomap_read_folio(folio, &gfs2_iomap_ops);
461 error = stuffed_readpage(ip, &folio->page);
462 folio_unlock(folio);
464 error = mpage_read_folio(folio, gfs2_block_map);
581 struct folio *folio)
584 folio_set_checked(folio);
585 return block_dirty_folio(mapping, folio);
640 static void gfs2_invalidate_folio(struct folio *folio, size_t offset,
643 struct gfs2_sbd *sdp = GFS2_SB(folio->mapping->host);
645 int partial_page = (offset || length < folio_size(folio));
649 BUG_ON(!folio_test_locked(folio));
651 folio_clear_checked(folio);
652 head = folio_buffers(folio);
668 filemap_release_folio(folio, 0);
672 * gfs2_release_folio - free the metadata associated with a folio
673 * @folio: the folio that's being released
676 * Calls try_to_free_buffers() to free the buffers and put the folio if the
679 * Returns: true if the folio was put or else false
682 bool gfs2_release_folio(struct folio *folio, gfp_t gfp_mask)
684 struct address_space *mapping = folio->mapping;
689 head = folio_buffers(folio);
738 return try_to_free_buffers(folio);