Lines Matching refs:xas
131 XA_STATE(xas, &mapping->i_pages, folio->index); in page_cache_delete()
134 mapping_set_update(&xas, mapping); in page_cache_delete()
136 xas_set_order(&xas, folio->index, folio_order(folio)); in page_cache_delete()
141 xas_store(&xas, shadow); in page_cache_delete()
142 xas_init_marks(&xas); in page_cache_delete()
278 XA_STATE(xas, &mapping->i_pages, fbatch->folios[0]->index); in page_cache_delete_batch()
283 mapping_set_update(&xas, mapping); in page_cache_delete_batch()
284 xas_for_each(&xas, folio, ULONG_MAX) { in page_cache_delete_batch()
310 xas_store(&xas, NULL); in page_cache_delete_batch()
490 XA_STATE(xas, &mapping->i_pages, start_byte >> PAGE_SHIFT); in filemap_range_has_page()
498 folio = xas_find(&xas, max); in filemap_range_has_page()
499 if (xas_retry(&xas, folio)) in filemap_range_has_page()
647 XA_STATE(xas, &mapping->i_pages, start_byte >> PAGE_SHIFT); in filemap_range_has_writeback()
655 xas_for_each(&xas, folio, max) { in filemap_range_has_writeback()
656 if (xas_retry(&xas, folio)) in filemap_range_has_writeback()
825 XA_STATE(xas, &mapping->i_pages, offset); in replace_page_cache_folio()
837 xas_lock_irq(&xas); in replace_page_cache_folio()
838 xas_store(&xas, new); in replace_page_cache_folio()
850 xas_unlock_irq(&xas); in replace_page_cache_folio()
860 XA_STATE_ORDER(xas, &mapping->i_pages, index, folio_order(folio)); in __filemap_add_folio()
869 mapping_set_update(&xas, mapping); in __filemap_add_folio()
878 folio->index = xas.xa_index; in __filemap_add_folio()
884 xas_lock_irq(&xas); in __filemap_add_folio()
885 xas_for_each_conflict(&xas, entry) { in __filemap_add_folio()
888 xas_set_err(&xas, -EEXIST); in __filemap_add_folio()
896 order = xas_get_order(&xas); in __filemap_add_folio()
908 xas_set_order(&xas, index, split_order); in __filemap_add_folio()
909 xas_try_split(&xas, old, order); in __filemap_add_folio()
910 if (xas_error(&xas)) in __filemap_add_folio()
918 xas_reset(&xas); in __filemap_add_folio()
924 xas_store(&xas, folio); in __filemap_add_folio()
925 if (xas_error(&xas)) in __filemap_add_folio()
939 xas_unlock_irq(&xas); in __filemap_add_folio()
941 if (!xas_nomem(&xas, gfp)) in __filemap_add_folio()
945 if (xas_error(&xas)) in __filemap_add_folio()
954 return xas_error(&xas); in __filemap_add_folio()
1769 XA_STATE(xas, &mapping->i_pages, index); in page_cache_next_miss()
1772 void *entry = xas_next(&xas); in page_cache_next_miss()
1774 return xas.xa_index; in page_cache_next_miss()
1775 if (xas.xa_index == 0) in page_cache_next_miss()
1805 XA_STATE(xas, &mapping->i_pages, index); in page_cache_prev_miss()
1808 void *entry = xas_prev(&xas); in page_cache_prev_miss()
1811 if (xas.xa_index == ULONG_MAX) in page_cache_prev_miss()
1815 return xas.xa_index; in page_cache_prev_miss()
1853 XA_STATE(xas, &mapping->i_pages, index); in filemap_get_entry()
1858 xas_reset(&xas); in filemap_get_entry()
1859 folio = xas_load(&xas); in filemap_get_entry()
1860 if (xas_retry(&xas, folio)) in filemap_get_entry()
1872 if (unlikely(folio != xas_reload(&xas))) { in filemap_get_entry()
2018 static inline struct folio *find_get_entry(struct xa_state *xas, pgoff_t max, in find_get_entry() argument
2025 folio = xas_find(xas, max); in find_get_entry()
2027 folio = xas_find_marked(xas, max, mark); in find_get_entry()
2029 if (xas_retry(xas, folio)) in find_get_entry()
2042 if (unlikely(folio != xas_reload(xas))) { in find_get_entry()
2049 xas_reset(xas); in find_get_entry()
2076 XA_STATE(xas, &mapping->i_pages, *start); in find_get_entries()
2080 while ((folio = find_get_entry(&xas, end, XA_PRESENT)) != NULL) { in find_get_entries()
2081 indices[fbatch->nr] = xas.xa_index; in find_get_entries()
2125 XA_STATE(xas, &mapping->i_pages, *start); in find_lock_entries()
2129 while ((folio = find_get_entry(&xas, end, XA_PRESENT))) { in find_lock_entries()
2147 VM_BUG_ON_FOLIO(!folio_contains(folio, xas.xa_index), in find_lock_entries()
2150 nr = 1 << xas_get_order(&xas); in find_lock_entries()
2151 base = xas.xa_index & ~(nr - 1); in find_lock_entries()
2162 indices[fbatch->nr] = xas.xa_index; in find_lock_entries()
2215 XA_STATE(xas, &mapping->i_pages, *start); in filemap_get_folios_contig()
2221 for (folio = xas_load(&xas); folio && xas.xa_index <= end; in filemap_get_folios_contig()
2222 folio = xas_next(&xas)) { in filemap_get_folios_contig()
2223 if (xas_retry(&xas, folio)) in filemap_get_folios_contig()
2239 if (unlikely(folio != xas_reload(&xas))) in filemap_get_folios_contig()
2247 xas_advance(&xas, folio_next_index(folio) - 1); in filemap_get_folios_contig()
2253 xas_reset(&xas); in filemap_get_folios_contig()
2291 XA_STATE(xas, &mapping->i_pages, *start); in filemap_get_folios_tag()
2295 while ((folio = find_get_entry(&xas, end, tag)) != NULL) { in filemap_get_folios_tag()
2358 XA_STATE(xas, &mapping->i_pages, index); in filemap_get_read_batch()
2362 for (folio = xas_load(&xas); folio; folio = xas_next(&xas)) { in filemap_get_read_batch()
2363 if (xas_retry(&xas, folio)) in filemap_get_read_batch()
2365 if (xas.xa_index > max || xa_is_value(folio)) in filemap_get_read_batch()
2372 if (unlikely(folio != xas_reload(&xas))) in filemap_get_read_batch()
2381 xas_advance(&xas, folio_next_index(folio) - 1); in filemap_get_read_batch()
2386 xas_reset(&xas); in filemap_get_read_batch()
3043 static inline loff_t folio_seek_hole_data(struct xa_state *xas, in folio_seek_hole_data() argument
3055 xas_pause(xas); in folio_seek_hole_data()
3076 static inline size_t seek_folio_size(struct xa_state *xas, struct folio *folio) in seek_folio_size() argument
3079 return PAGE_SIZE << xas_get_order(xas); in seek_folio_size()
3104 XA_STATE(xas, &mapping->i_pages, start >> PAGE_SHIFT); in mapping_seek_hole_data()
3113 while ((folio = find_get_entry(&xas, max, XA_PRESENT))) { in mapping_seek_hole_data()
3114 loff_t pos = (u64)xas.xa_index << PAGE_SHIFT; in mapping_seek_hole_data()
3123 seek_size = seek_folio_size(&xas, folio); in mapping_seek_hole_data()
3125 start = folio_seek_hole_data(&xas, mapping, folio, start, pos, in mapping_seek_hole_data()
3132 xas_set(&xas, pos >> PAGE_SHIFT); in mapping_seek_hole_data()
3550 static struct folio *next_uptodate_folio(struct xa_state *xas, in next_uptodate_folio() argument
3553 struct folio *folio = xas_next_entry(xas, end_pgoff); in next_uptodate_folio()
3559 if (xas_retry(xas, folio)) in next_uptodate_folio()
3568 if (unlikely(folio != xas_reload(xas))) in next_uptodate_folio()
3579 if (xas->xa_index >= max_idx) in next_uptodate_folio()
3586 } while ((folio = xas_next_entry(xas, end_pgoff)) != NULL); in next_uptodate_folio()
3698 XA_STATE(xas, &mapping->i_pages, start_pgoff); in filemap_map_pages()
3705 folio = next_uptodate_folio(&xas, mapping, end_pgoff); in filemap_map_pages()
3730 addr += (xas.xa_index - last_pgoff) << PAGE_SHIFT; in filemap_map_pages()
3731 vmf->pte += xas.xa_index - last_pgoff; in filemap_map_pages()
3732 last_pgoff = xas.xa_index; in filemap_map_pages()
3734 nr_pages = min(end, end_pgoff) - xas.xa_index + 1; in filemap_map_pages()
3741 xas.xa_index - folio->index, addr, in filemap_map_pages()
3746 } while ((folio = next_uptodate_folio(&xas, mapping, end_pgoff)) != NULL); in filemap_map_pages()
4358 XA_STATE(xas, &mapping->i_pages, first_index); in filemap_cachestat()
4365 xas_for_each(&xas, folio, last_index) { in filemap_cachestat()
4381 if (xas_retry(&xas, folio)) in filemap_cachestat()
4384 order = xas_get_order(&xas); in filemap_cachestat()
4386 folio_first_index = round_down(xas.xa_index, 1 << order); in filemap_cachestat()
4436 if (xas_get_mark(&xas, PAGECACHE_TAG_DIRTY)) in filemap_cachestat()
4439 if (xas_get_mark(&xas, PAGECACHE_TAG_WRITEBACK)) in filemap_cachestat()
4444 xas_pause(&xas); in filemap_cachestat()