Lines Matching refs:folio

19 	struct folio *f;  in bch2_filemap_get_contig_folios_d()
126 struct bch_folio *__bch2_folio_create(struct folio *folio, gfp_t gfp) in __bch2_folio_create() argument
132 folio_sectors(folio), gfp); in __bch2_folio_create()
137 folio_attach_private(folio, s); in __bch2_folio_create()
141 struct bch_folio *bch2_folio_create(struct folio *folio, gfp_t gfp) in bch2_folio_create() argument
143 return bch2_folio(folio) ?: __bch2_folio_create(folio, gfp); in bch2_folio_create()
155 static void __bch2_folio_set(struct folio *folio, in __bch2_folio_set() argument
159 struct bch_folio *s = bch2_folio(folio); in __bch2_folio_set()
160 unsigned i, sectors = folio_sectors(folio); in __bch2_folio_set()
169 bch2_folio_sector_set(folio, s, i, state); in __bch2_folio_set()
183 struct folio **fs, unsigned nr_folios) in bch2_folio_set()
210 struct folio *folio = fs[folio_idx]; in bch2_folio_set()
211 u64 folio_start = folio_sector(folio); in bch2_folio_set()
212 u64 folio_end = folio_end_sector(folio); in bch2_folio_set()
221 if (!bch2_folio(folio)->uptodate) in bch2_folio_set()
222 __bch2_folio_set(folio, folio_offset, folio_len, nr_ptrs, state); in bch2_folio_set()
266 struct folio *folio = fbatch.folios[i]; in bch2_mark_pagecache_unallocated() local
267 u64 folio_start = folio_sector(folio); in bch2_mark_pagecache_unallocated()
268 u64 folio_end = folio_end_sector(folio); in bch2_mark_pagecache_unallocated()
275 folio_lock(folio); in bch2_mark_pagecache_unallocated()
276 s = bch2_folio(folio); in bch2_mark_pagecache_unallocated()
285 folio_unlock(folio); in bch2_mark_pagecache_unallocated()
311 struct folio *folio = fbatch.folios[i]; in bch2_mark_pagecache_reserved() local
314 folio_lock(folio); in bch2_mark_pagecache_reserved()
315 else if (!folio_trylock(folio)) { in bch2_mark_pagecache_reserved()
321 u64 folio_start = folio_sector(folio); in bch2_mark_pagecache_reserved()
322 u64 folio_end = folio_end_sector(folio); in bch2_mark_pagecache_reserved()
328 struct bch_folio *s = bch2_folio(folio); in bch2_mark_pagecache_reserved()
336 bch2_folio_sector_set(folio, s, j, in bch2_mark_pagecache_reserved()
342 folio_unlock(folio); in bch2_mark_pagecache_reserved()
362 struct folio *folio, bool check_enospc) in bch2_get_folio_disk_reservation() argument
364 struct bch_folio *s = bch2_folio_create(folio, 0); in bch2_get_folio_disk_reservation()
367 unsigned i, sectors = folio_sectors(folio), disk_res_sectors = 0; in bch2_get_folio_disk_reservation()
404 struct folio *folio, in __bch2_folio_reservation_get() argument
409 struct bch_folio *s = bch2_folio_create(folio, 0); in __bch2_folio_reservation_get()
473 struct folio *folio, in bch2_folio_reservation_get() argument
477 return __bch2_folio_reservation_get(c, inode, folio, res, offset, len, false); in bch2_folio_reservation_get()
482 struct folio *folio, in bch2_folio_reservation_get_partial() argument
486 return __bch2_folio_reservation_get(c, inode, folio, res, offset, len, true); in bch2_folio_reservation_get_partial()
489 static void bch2_clear_folio_bits(struct folio *folio) in bch2_clear_folio_bits() argument
491 struct bch_inode_info *inode = to_bch_ei(folio->mapping->host); in bch2_clear_folio_bits()
493 struct bch_folio *s = bch2_folio(folio); in bch2_clear_folio_bits()
495 int i, sectors = folio_sectors(folio), dirty_sectors = 0; in bch2_clear_folio_bits()
500 EBUG_ON(!folio_test_locked(folio)); in bch2_clear_folio_bits()
501 EBUG_ON(folio_test_writeback(folio)); in bch2_clear_folio_bits()
508 bch2_folio_sector_set(folio, s, i, folio_sector_undirty(s->s[i].state)); in bch2_clear_folio_bits()
515 bch2_folio_release(folio); in bch2_clear_folio_bits()
520 struct folio *folio, in bch2_set_folio_dirty() argument
524 struct bch_folio *s = bch2_folio(folio); in bch2_set_folio_dirty()
527 WARN_ON((u64) folio_pos(folio) + offset + len > in bch2_set_folio_dirty()
551 bch2_folio_sector_set(folio, s, i, folio_sector_dirty(s->s[i].state)); in bch2_set_folio_dirty()
558 if (!folio_test_dirty(folio)) in bch2_set_folio_dirty()
559 filemap_dirty_folio(inode->v.i_mapping, folio); in bch2_set_folio_dirty()
602 struct folio *folio = page_folio(vmf->page); in bch2_page_mkwrite() local
625 folio_lock(folio); in bch2_page_mkwrite()
628 if (folio->mapping != mapping || folio_pos(folio) >= isize) { in bch2_page_mkwrite()
629 folio_unlock(folio); in bch2_page_mkwrite()
634 len = min_t(loff_t, folio_size(folio), isize - folio_pos(folio)); in bch2_page_mkwrite()
636 if (bch2_folio_set(c, inode_inum(inode), &folio, 1) ?: in bch2_page_mkwrite()
637 bch2_folio_reservation_get(c, inode, folio, &res, 0, len)) { in bch2_page_mkwrite()
638 folio_unlock(folio); in bch2_page_mkwrite()
643 bch2_set_folio_dirty(c, inode, folio, &res, 0, len); in bch2_page_mkwrite()
646 folio_wait_stable(folio); in bch2_page_mkwrite()
655 void bch2_invalidate_folio(struct folio *folio, size_t offset, size_t length) in bch2_invalidate_folio() argument
657 if (offset || length < folio_size(folio)) in bch2_invalidate_folio()
660 bch2_clear_folio_bits(folio); in bch2_invalidate_folio()
663 bool bch2_release_folio(struct folio *folio, gfp_t gfp_mask) in bch2_release_folio() argument
665 if (folio_test_dirty(folio) || folio_test_writeback(folio)) in bch2_release_folio()
668 bch2_clear_folio_bits(folio); in bch2_release_folio()
674 static int folio_data_offset(struct folio *folio, loff_t pos, in folio_data_offset() argument
677 struct bch_folio *s = bch2_folio(folio); in folio_data_offset()
678 unsigned i, sectors = folio_sectors(folio); in folio_data_offset()
681 for (i = folio_pos_to_s(folio, pos); i < sectors; i++) in folio_data_offset()
708 struct folio *folio = fbatch.folios[i]; in bch2_seek_pagecache_data() local
711 folio_lock(folio); in bch2_seek_pagecache_data()
712 } else if (!folio_trylock(folio)) { in bch2_seek_pagecache_data()
717 offset = folio_data_offset(folio, in bch2_seek_pagecache_data()
718 max(folio_pos(folio), start_offset), in bch2_seek_pagecache_data()
721 ret = clamp(folio_pos(folio) + offset, in bch2_seek_pagecache_data()
723 folio_unlock(folio); in bch2_seek_pagecache_data()
727 folio_unlock(folio); in bch2_seek_pagecache_data()
747 struct folio *folio; in folio_hole_offset() local
752 folio = __filemap_get_folio(mapping, *offset >> PAGE_SHIFT, in folio_hole_offset()
754 if (IS_ERR(folio)) in folio_hole_offset()
755 return PTR_ERR(folio); in folio_hole_offset()
757 s = bch2_folio(folio); in folio_hole_offset()
761 sectors = folio_sectors(folio); in folio_hole_offset()
762 for (i = folio_pos_to_s(folio, *offset); i < sectors; i++) in folio_hole_offset()
766 folio_pos(folio) + (i << SECTOR_SHIFT)); in folio_hole_offset()
770 *offset = folio_end_pos(folio); in folio_hole_offset()
773 folio_unlock(folio); in folio_hole_offset()
774 folio_put(folio); in folio_hole_offset()