Home
last modified time | relevance | path

Searched refs:xas (Results 1 – 25 of 34) sorted by relevance

12

/linux/lib/
H A Dxarray.c38 static inline void xas_lock_type(struct xa_state *xas, unsigned int lock_type) in xas_lock_type() argument
41 xas_lock_irq(xas); in xas_lock_type()
43 xas_lock_bh(xas); in xas_lock_type()
45 xas_lock(xas); in xas_lock_type()
48 static inline void xas_unlock_type(struct xa_state *xas, unsigned int lock_type) in xas_unlock_type() argument
51 xas_unlock_irq(xas); in xas_unlock_type()
53 xas_unlock_bh(xas); in xas_unlock_type()
55 xas_unlock(xas); in xas_unlock_type()
126 static void xas_squash_marks(const struct xa_state *xas) in xas_squash_marks() argument
129 unsigned int limit = xas->xa_offset + xas->xa_sibs + 1; in xas_squash_marks()
[all …]
H A Dtest_xarray.c74 XA_STATE_ORDER(xas, xa, index, order); in xa_store_order()
78 xas_lock(&xas); in xa_store_order()
79 curr = xas_store(&xas, entry); in xa_store_order()
80 xas_unlock(&xas); in xa_store_order()
81 } while (xas_nomem(&xas, gfp)); in xa_store_order()
104 XA_STATE(xas, xa, 0); in check_xas_retry()
111 XA_BUG_ON(xa, xas_find(&xas, ULONG_MAX) != xa_mk_value(0)); in check_xas_retry()
113 XA_BUG_ON(xa, !xa_is_retry(xas_reload(&xas))); in check_xas_retry()
114 XA_BUG_ON(xa, xas_retry(&xas, NULL)); in check_xas_retry()
115 XA_BUG_ON(xa, xas_retry(&xas, xa_mk_value(0))); in check_xas_retry()
[all …]
H A Didr.c385 XA_STATE(xas, &ida->xa, min / IDA_BITMAP_BITS); in ida_alloc_range()
397 xas_lock_irqsave(&xas, flags); in ida_alloc_range()
399 bitmap = xas_find_marked(&xas, max / IDA_BITMAP_BITS, XA_FREE_MARK); in ida_alloc_range()
400 if (xas.xa_index > min / IDA_BITMAP_BITS) in ida_alloc_range()
402 if (xas.xa_index * IDA_BITMAP_BITS + bit > max) in ida_alloc_range()
410 if (xas.xa_index * IDA_BITMAP_BITS + bit > max) in ida_alloc_range()
414 xas_store(&xas, xa_mk_value(tmp)); in ida_alloc_range()
424 xas_store(&xas, bitmap); in ida_alloc_range()
425 if (xas_error(&xas)) { in ida_alloc_range()
433 if (xas.xa_index * IDA_BITMAP_BITS + bit > max) in ida_alloc_range()
[all …]
H A Diov_iter.c975 XA_STATE(xas, xa, index); in iter_xarray_populate_pages()
980 for (folio = xas_load(&xas); folio; folio = xas_next(&xas)) { in iter_xarray_populate_pages()
981 if (xas_retry(&xas, folio)) in iter_xarray_populate_pages()
985 if (unlikely(folio != xas_reload(&xas))) { in iter_xarray_populate_pages()
986 xas_reset(&xas); in iter_xarray_populate_pages()
990 pages[ret] = folio_file_page(folio, xas.xa_index); in iter_xarray_populate_pages()
1573 XA_STATE(xas, i->xarray, pos >> PAGE_SHIFT); in iov_iter_extract_xarray_pages()
1584 for (folio = xas_load(&xas); folio; folio = xas_next(&xas)) { in iov_iter_extract_xarray_pages()
1585 if (xas_retry(&xas, folio)) in iov_iter_extract_xarray_pages()
1589 if (unlikely(folio != xas_reload(&xas))) { in iov_iter_extract_xarray_pages()
[all …]
/linux/include/linux/
H A Dxarray.h1416 #define xas_marked(xas, mark) xa_marked((xas)->xa, (mark)) argument
1417 #define xas_trylock(xas) xa_trylock((xas)->xa) argument
1418 #define xas_lock(xas) xa_lock((xas)->xa) argument
1419 #define xas_unlock(xas) xa_unlock((xas)->xa) argument
1420 #define xas_lock_bh(xas) xa_lock_bh((xas)->xa) argument
1421 #define xas_unlock_bh(xas) xa_unlock_bh((xas)->xa) argument
1422 #define xas_lock_irq(xas) xa_lock_irq((xas)->xa) argument
1423 #define xas_unlock_irq(xas) xa_unlock_irq((xas)->xa) argument
1424 #define xas_lock_irqsave(xas, flags) \ argument
1425 xa_lock_irqsave((xas)->xa, flags)
[all …]
H A Diov_iter.h211 XA_STATE(xas, iter->xarray, index); in iterate_xarray()
214 xas_for_each(&xas, folio, ULONG_MAX) { in iterate_xarray()
217 if (xas_retry(&xas, folio)) in iterate_xarray()
/linux/fs/
H A Ddax.c146 static wait_queue_head_t *dax_entry_waitqueue(struct xa_state *xas, in dax_entry_waitqueue() argument
150 unsigned long index = xas->xa_index; in dax_entry_waitqueue()
159 key->xa = xas->xa; in dax_entry_waitqueue()
162 hash = hash_long((unsigned long)xas->xa ^ index, DAX_WAIT_TABLE_BITS); in dax_entry_waitqueue()
184 static void dax_wake_entry(struct xa_state *xas, void *entry, in dax_wake_entry() argument
190 wq = dax_entry_waitqueue(xas, entry, &key); in dax_wake_entry()
212 static void *get_next_unlocked_entry(struct xa_state *xas, unsigned int order) in get_next_unlocked_entry() argument
222 entry = xas_find_conflict(xas); in get_next_unlocked_entry()
230 wq = dax_entry_waitqueue(xas, entry, &ewait.key); in get_next_unlocked_entry()
233 xas_unlock_irq(xas); in get_next_unlocked_entry()
[all …]
/linux/tools/testing/radix-tree/
H A Diteration_check.c23 XA_STATE(xas, xa, index); in my_item_insert()
28 xas_lock(&xas); in my_item_insert()
30 xas_set_order(&xas, index, order); in my_item_insert()
32 if (xas_find_conflict(&xas)) in my_item_insert()
34 xas_store(&xas, item); in my_item_insert()
35 xas_set_mark(&xas, TAG); in my_item_insert()
38 xas_unlock(&xas); in my_item_insert()
39 if (xas_nomem(&xas, GFP_KERNEL)) in my_item_insert()
69 XA_STATE(xas, &array, 0); in tagged_iteration_fn()
75 xas_set(&xas, 0); in tagged_iteration_fn()
[all …]
H A Dtest.c176 XA_STATE(xas, xa, start); in tag_tagged_items()
183 xas_lock_irq(&xas); in tag_tagged_items()
184 xas_for_each_marked(&xas, item, end, iftag) { in tag_tagged_items()
185 xas_set_mark(&xas, thentag); in tag_tagged_items()
189 xas_pause(&xas); in tag_tagged_items()
190 xas_unlock_irq(&xas); in tag_tagged_items()
192 xas_lock_irq(&xas); in tag_tagged_items()
194 xas_unlock_irq(&xas); in tag_tagged_items()
257 XA_STATE(xas, xa, 0); in item_kill_tree()
260 xas_for_each(&xas, entry, ULONG_MAX) { in item_kill_tree()
[all …]
H A Diteration_check_2.c15 XA_STATE(xas, arg, 0); in iterator()
21 xas_set(&xas, 0); in iterator()
23 xas_for_each_marked(&xas, entry, ULONG_MAX, XA_MARK_0) in iterator()
26 assert(xas.xa_index >= 100); in iterator()
H A Dregression1.c82 XA_STATE(xas, &mt_tree, start); in find_get_pages()
87 xas_for_each(&xas, page, ULONG_MAX) { in find_get_pages()
88 if (xas_retry(&xas, page)) in find_get_pages()
99 if (unlikely(page != xas_reload(&xas))) in find_get_pages()
108 xas_reset(&xas); in find_get_pages()
/linux/mm/
H A Dfilemap.c132 XA_STATE(xas, &mapping->i_pages, folio->index); in page_cache_delete()
135 mapping_set_update(&xas, mapping); in page_cache_delete()
137 xas_set_order(&xas, folio->index, folio_order(folio)); in page_cache_delete()
142 xas_store(&xas, shadow); in page_cache_delete()
143 xas_init_marks(&xas); in page_cache_delete()
282 XA_STATE(xas, &mapping->i_pages, fbatch->folios[0]->index); in page_cache_delete_batch()
287 mapping_set_update(&xas, mapping); in page_cache_delete_batch()
288 xas_for_each(&xas, folio, ULONG_MAX) { in page_cache_delete_batch()
314 xas_store(&xas, NULL); in page_cache_delete_batch()
483 XA_STATE(xas, &mapping->i_pages, start_byte >> PAGE_SHIFT); in filemap_range_has_page()
[all …]
H A Dkhugepaged.c2250 XA_STATE_ORDER(xas, &mapping->i_pages, start, HPAGE_PMD_ORDER); in collapse_file()
2268 mapping_set_update(&xas, mapping); in collapse_file()
2281 xas_lock_irq(&xas); in collapse_file()
2282 xas_create_range(&xas); in collapse_file()
2283 if (!xas_error(&xas)) in collapse_file()
2285 xas_unlock_irq(&xas); in collapse_file()
2286 if (!xas_nomem(&xas, GFP_KERNEL)) { in collapse_file()
2293 xas_set(&xas, index); in collapse_file()
2294 folio = xas_load(&xas); in collapse_file()
2296 VM_BUG_ON(index != xas.xa_index); in collapse_file()
[all …]
H A Dshmem.c501 XA_STATE(xas, &mapping->i_pages, index); in shmem_replace_entry()
506 item = xas_load(&xas); in shmem_replace_entry()
509 xas_store(&xas, replacement); in shmem_replace_entry()
524 XA_STATE(xas, &mapping->i_pages, index); in shmem_confirm_swap()
530 entry = xas_load(&xas); in shmem_confirm_swap()
532 ret = xas_get_order(&xas); in shmem_confirm_swap()
533 } while (xas_retry(&xas, entry)); in shmem_confirm_swap()
896 XA_STATE_ORDER(xas, &mapping->i_pages, index, folio_order(folio)); in shmem_add_to_page_cache()
915 xas_lock_irq(&xas); in shmem_add_to_page_cache()
916 xas_for_each_conflict(&xas, entr in shmem_add_to_page_cache()
[all...]
H A Dpage-writeback.c2348 XA_STATE(xas, &mapping->i_pages, start); in tag_pages_for_writeback()
2352 xas_lock_irq(&xas); in tag_pages_for_writeback()
2353 xas_for_each_marked(&xas, page, end, PAGECACHE_TAG_DIRTY) { in tag_pages_for_writeback()
2354 xas_set_mark(&xas, PAGECACHE_TAG_TOWRITE); in tag_pages_for_writeback()
2358 xas_pause(&xas); in tag_pages_for_writeback()
2359 xas_unlock_irq(&xas); in tag_pages_for_writeback()
2361 xas_lock_irq(&xas); in tag_pages_for_writeback()
2363 xas_unlock_irq(&xas); in tag_pages_for_writeback()
2999 XA_STATE(xas, &mapping->i_pages, folio->index); in __folio_start_writeback()
3005 xas_lock_irqsave(&xas, flags); in __folio_start_writeback()
[all …]
H A Dmigrate.c586 XA_STATE(xas, &mapping->i_pages, folio->index); in __folio_migrate_mapping()
620 xas_lock_irq(&xas); in __folio_migrate_mapping()
626 xas_unlock_irq(&xas); in __folio_migrate_mapping()
659 xas_store(&xas, newfolio); in __folio_migrate_mapping()
672 xas_unlock(&xas); in __folio_migrate_mapping()
742 XA_STATE(xas, &mapping->i_pages, src->index); in migrate_huge_page_move_mapping()
752 xas_lock_irq(&xas); in migrate_huge_page_move_mapping()
754 xas_unlock_irq(&xas); in migrate_huge_page_move_mapping()
763 xas_store(&xas, dst); in migrate_huge_page_move_mapping()
767 xas_unlock_irq(&xas); in migrate_huge_page_move_mapping()
/linux/drivers/block/
H A Dbrd.c52 XA_STATE(xas, &brd->brd_pages, sector >> PAGE_SECTORS_SHIFT); in brd_lookup_page()
56 page = xas_load(&xas); in brd_lookup_page()
57 if (xas_retry(&xas, page)) { in brd_lookup_page()
58 xas_reset(&xas); in brd_lookup_page()
66 xas_reset(&xas); in brd_lookup_page()
70 if (unlikely(page != xas_reload(&xas))) { in brd_lookup_page()
72 xas_reset(&xas); in brd_lookup_page()
/linux/drivers/iommu/iommufd/
H A Dpages.c561 XA_STATE(xas, xa, start_index); in batch_from_xarray()
566 entry = xas_next(&xas); in batch_from_xarray()
567 if (xas_retry(&xas, entry)) in batch_from_xarray()
582 XA_STATE(xas, xa, start_index); in batch_from_xarray_clear()
585 xas_lock(&xas); in batch_from_xarray_clear()
587 entry = xas_next(&xas); in batch_from_xarray_clear()
588 if (xas_retry(&xas, entry)) in batch_from_xarray_clear()
593 xas_store(&xas, NULL); in batch_from_xarray_clear()
598 xas_unlock(&xas); in batch_from_xarray_clear()
604 XA_STATE(xas, xa, start_index); in clear_xarray()
[all …]
/linux/drivers/net/ethernet/mellanox/mlx5/core/
H A Dfs_counters.c115 XA_STATE(xas, &fc_stats->counters, 0); in mlx5_fc_stats_query_all_counters()
123 xas_lock(&xas); in mlx5_fc_stats_query_all_counters()
124 xas_for_each(&xas, counter, U32_MAX) { in mlx5_fc_stats_query_all_counters()
125 if (xas_retry(&xas, counter)) in mlx5_fc_stats_query_all_counters()
133 xas_unlock(&xas); in mlx5_fc_stats_query_all_counters()
135 xas_reset(&xas); in mlx5_fc_stats_query_all_counters()
142 xas_lock(&xas); in mlx5_fc_stats_query_all_counters()
150 xas_unlock(&xas); in mlx5_fc_stats_query_all_counters()
/linux/fs/btrfs/
H A Dextent_io.c2152 XA_STATE(xas, &fs_info->buffer_tree, eb->start >> fs_info->nodesize_bits); in lock_extent_buffer_for_io()
2158 xas_lock_irqsave(&xas, flags); in lock_extent_buffer_for_io()
2159 xas_load(&xas); in lock_extent_buffer_for_io()
2160 xas_set_mark(&xas, PAGECACHE_TAG_WRITEBACK); in lock_extent_buffer_for_io()
2161 xas_clear_mark(&xas, PAGECACHE_TAG_DIRTY); in lock_extent_buffer_for_io()
2162 xas_clear_mark(&xas, PAGECACHE_TAG_TOWRITE); in lock_extent_buffer_for_io()
2163 xas_unlock_irqrestore(&xas, flags); in lock_extent_buffer_for_io()
2253 XA_STATE(xas, &fs_info->buffer_tree, eb->start >> fs_info->nodesize_bits); in buffer_tree_set_mark()
2256 xas_lock_irqsave(&xas, flags); in buffer_tree_set_mark()
2257 xas_load(&xas); in buffer_tree_set_mark()
[all …]
H A Dsubpage.c405 XA_STATE(xas, &mapping->i_pages, folio->index); in folio_clear_tags()
412 xas_lock_irqsave(&xas, flags); in folio_clear_tags()
413 xas_load(&xas); in folio_clear_tags()
414 xas_clear_mark(&xas, PAGECACHE_TAG_DIRTY); in folio_clear_tags()
415 xas_clear_mark(&xas, PAGECACHE_TAG_TOWRITE); in folio_clear_tags()
416 xas_unlock_irqrestore(&xas, flags); in folio_clear_tags()
/linux/fs/netfs/
H A Diterator.c216 XA_STATE(xas, iter->xarray, index); in netfs_limit_xarray()
225 xas_for_each(&xas, folio, ULONG_MAX) { in netfs_limit_xarray()
227 if (xas_retry(&xas, folio)) in netfs_limit_xarray()
H A Dfscache_io.c181 XA_STATE(xas, &mapping->i_pages, first); in __fscache_clear_page_bits()
184 xas_for_each(&xas, page, last) { in __fscache_clear_page_bits()
/linux/drivers/gpu/drm/amd/amdgpu/
H A Damdgpu_userq_fence.c239 XA_STATE(xas, &userq->fence_drv_xa, 0); in amdgpu_userq_fence_alloc()
243 entry = xas_find_marked(&xas, ULONG_MAX, XA_FREE_MARK); in amdgpu_userq_fence_alloc()
244 } while (xas_retry(&xas, entry)); in amdgpu_userq_fence_alloc()
247 userq_fence->fence_drv_array = kvmalloc_objs(fence_drv, xas.xa_index); in amdgpu_userq_fence_alloc()
254 userq_fence->fence_drv_array_count = xas.xa_index; in amdgpu_userq_fence_alloc()
256 0, ULONG_MAX, xas.xa_index, XA_PRESENT); in amdgpu_userq_fence_alloc()
/linux/fs/xfs/
H A Dxfs_zone_alloc.c450 XA_STATE (xas, &mp->m_groups[XG_TYPE_RTG].xa, 0); in xfs_open_zone()
458 xas_lock(&xas); in xfs_open_zone()
459 xas_for_each_marked(&xas, xg, ULONG_MAX, XFS_RTG_FREE) in xfs_open_zone()
462 xas_unlock(&xas); in xfs_open_zone()
466 xas_clear_mark(&xas, XFS_RTG_FREE); in xfs_open_zone()
468 xas_unlock(&xas); in xfs_open_zone()

12