| /linux/lib/ |
| H A D | xarray.c | 38 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 D | test_xarray.c | 74 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 D | idr.c | 385 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 …]
|
| /linux/include/linux/ |
| H A D | xarray.h | 1416 #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 D | iov_iter.h | 211 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/tools/testing/radix-tree/ |
| H A D | iteration_check.c | 23 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 D | test.c | 176 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 D | iteration_check_2.c | 15 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 D | regression1.c | 82 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/fs/cachefiles/ |
| H A D | ondemand.c | 25 XA_STATE(xas, NULL, 0); in cachefiles_ondemand_fd_release() 32 xas.xa = &cache->reqs; in cachefiles_ondemand_fd_release() 42 xas_for_each_marked(&xas, req, ULONG_MAX, CACHEFILES_REQ_NEW) { in cachefiles_ondemand_fd_release() 46 xas_store(&xas, NULL); in cachefiles_ondemand_fd_release() 122 XA_STATE(xas, &cache->reqs, id); in cachefiles_ondemand_fd_ioctl() 131 req = xas_load(&xas); in cachefiles_ondemand_fd_ioctl() 137 xas_store(&xas, NULL); in cachefiles_ondemand_fd_ioctl() 167 XA_STATE(xas, &cache->reqs, 0); in cachefiles_ondemand_copen() 192 xas.xa_index = id; in cachefiles_ondemand_copen() 193 req = xas_load(&xas); in cachefiles_ondemand_copen() [all …]
|
| H A D | daemon.c | 361 XA_STATE(xas, &cache->reqs, 0); in cachefiles_daemon_poll() 370 xas_lock(&xas); in cachefiles_daemon_poll() 371 xas_for_each_marked(&xas, req, ULONG_MAX, CACHEFILES_REQ_NEW) { in cachefiles_daemon_poll() 377 xas_unlock(&xas); in cachefiles_daemon_poll()
|
| /linux/mm/ |
| H A D | memfd.c | 37 static void memfd_tag_pins(struct xa_state *xas) in memfd_tag_pins() argument 44 xas_lock_irq(xas); in memfd_tag_pins() 45 xas_for_each(xas, folio, ULONG_MAX) { in memfd_tag_pins() 47 xas_set_mark(xas, MEMFD_TAG_PINNED); in memfd_tag_pins() 53 xas_pause(xas); in memfd_tag_pins() 54 xas_unlock_irq(xas); in memfd_tag_pins() 56 xas_lock_irq(xas); in memfd_tag_pins() 58 xas_unlock_irq(xas); in memfd_tag_pins() 157 XA_STATE(xas, &mapping->i_pages, 0); in memfd_wait_for_pins() 161 memfd_tag_pins(&xas); in memfd_wait_for_pins() [all …]
|
| H A D | filemap.c | 132 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, in filemap_range_has_page() 2061 find_get_entry(struct xa_state * xas,pgoff_t max,xa_mark_t mark) find_get_entry() argument 3147 folio_seek_hole_data(struct xa_state * xas,struct address_space * mapping,struct folio * folio,loff_t start,loff_t end,bool seek_data) folio_seek_hole_data() argument 3180 seek_folio_size(struct xa_state * xas,struct folio * folio) seek_folio_size() argument 3702 next_uptodate_folio(struct xa_state * xas,struct address_space * mapping,pgoff_t end_pgoff) next_uptodate_folio() argument [all...] |
| H A D | page-writeback.c | 2359 XA_STATE(xas, &mapping->i_pages, start); in tag_pages_for_writeback() 2363 xas_lock_irq(&xas); in tag_pages_for_writeback() 2364 xas_for_each_marked(&xas, page, end, PAGECACHE_TAG_DIRTY) { in tag_pages_for_writeback() 2365 xas_set_mark(&xas, PAGECACHE_TAG_TOWRITE); in tag_pages_for_writeback() 2369 xas_pause(&xas); in tag_pages_for_writeback() 2370 xas_unlock_irq(&xas); in tag_pages_for_writeback() 2372 xas_lock_irq(&xas); in tag_pages_for_writeback() 2374 xas_unlock_irq(&xas); in tag_pages_for_writeback() 3005 XA_STATE(xas, &mapping->i_pages, folio->index); in __folio_start_writeback() 3011 xas_lock_irqsave(&xas, flag in __folio_start_writeback() [all...] |
| H A D | migrate.c | 574 XA_STATE(xas, &mapping->i_pages, folio->index); in __folio_migrate_mapping() 607 xas_lock_irq(&xas); in __folio_migrate_mapping() 613 xas_unlock_irq(&xas); in __folio_migrate_mapping() 646 xas_store(&xas, newfolio); in __folio_migrate_mapping() 659 xas_unlock(&xas); in __folio_migrate_mapping() 729 XA_STATE(xas, &mapping->i_pages, src->index); in migrate_huge_page_move_mapping() 739 xas_lock_irq(&xas); in migrate_huge_page_move_mapping() 741 xas_unlock_irq(&xas); in migrate_huge_page_move_mapping() 750 xas_store(&xas, dst); in migrate_huge_page_move_mapping() 754 xas_unlock_irq(&xas); in migrate_huge_page_move_mapping() [all...] |
| /linux/drivers/block/ |
| H A D | brd.c | 52 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/infiniband/core/ |
| H A D | ib_core_uverbs.c | 290 XA_STATE(xas, &ucontext->mmap_xa, min_pgoff); in rdma_user_mmap_entry_insert_range() 319 xas_find_marked(&xas, max_pgoff, XA_FREE_MARK); in rdma_user_mmap_entry_insert_range() 320 if (xas.xa_node == XAS_RESTART) in rdma_user_mmap_entry_insert_range() 323 xa_first = xas.xa_index; in rdma_user_mmap_entry_insert_range() 333 xas_next_entry(&xas, xa_last - 1); in rdma_user_mmap_entry_insert_range() 334 if (xas.xa_node == XAS_BOUNDS || xas.xa_index >= xa_last) in rdma_user_mmap_entry_insert_range()
|
| H A D | restrack.c | 69 XA_STATE(xas, &rt->xa, 0); in rdma_restrack_count() 73 xas_for_each(&xas, e, U32_MAX) { in rdma_restrack_count()
|
| /linux/drivers/net/ethernet/mellanox/mlx5/core/ |
| H A D | fs_counters.c | 115 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/drivers/iommu/iommufd/ |
| H A D | main.c | 105 XA_STATE(xas, &ictx->objects, obj->id); in iommufd_object_finalize() 109 old = xas_store(&xas, obj); in iommufd_object_finalize() 118 XA_STATE(xas, &ictx->objects, obj->id); in iommufd_object_abort() 122 old = xas_store(&xas, NULL); in iommufd_object_abort() 211 XA_STATE(xas, &ictx->objects, id); in iommufd_object_remove() 236 obj = xas_load(&xas); in iommufd_object_remove() 258 xas_store(&xas, (flags & REMOVE_OBJ_TOMBSTONE) ? XA_ZERO_ENTRY : NULL); in iommufd_object_remove()
|
| /linux/fs/btrfs/ |
| H A D | extent_io.c | 1992 XA_STATE(xas, &fs_info->buffer_tree, eb->start >> fs_info->nodesize_bits); in set_btree_ioerr() 1998 xas_lock_irqsave(&xas, flags); in set_btree_ioerr() 1999 xas_load(&xas); in set_btree_ioerr() 2000 xas_set_mark(&xas, PAGECACHE_TAG_WRITEBACK); in set_btree_ioerr() 2001 xas_clear_mark(&xas, PAGECACHE_TAG_DIRTY); in set_btree_ioerr() 2002 xas_clear_mark(&xas, PAGECACHE_TAG_TOWRITE); in set_btree_ioerr() 2003 xas_unlock_irqrestore(&xas, flags); in set_btree_ioerr() 2093 XA_STATE(xas, &fs_info->buffer_tree, eb->start >> fs_info->nodesize_bits); 2096 xas_lock_irqsave(&xas, flags); 2097 xas_load(&xas); 2125 find_get_eb(struct xa_state * xas,unsigned long max,xa_mark_t mark) find_get_eb() argument [all...] |
| /linux/fs/netfs/ |
| H A D | iterator.c | 216 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 D | fscache_io.c | 181 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 D | amdgpu_userq_fence.c | 238 XA_STATE(xas, &userq->fence_drv_xa, 0); in amdgpu_userq_fence_alloc() 242 entry = xas_find_marked(&xas, ULONG_MAX, XA_FREE_MARK); in amdgpu_userq_fence_alloc() 243 } while (xas_retry(&xas, entry)); in amdgpu_userq_fence_alloc() 246 userq_fence->fence_drv_array = kvmalloc_array(xas.xa_index, in amdgpu_userq_fence_alloc() 255 userq_fence->fence_drv_array_count = xas.xa_index; in amdgpu_userq_fence_alloc() 257 0, ULONG_MAX, xas.xa_index, XA_PRESENT); in amdgpu_userq_fence_alloc()
|
| /linux/fs/xfs/ |
| H A D | xfs_zone_alloc.c | 449 XA_STATE (xas, &mp->m_groups[XG_TYPE_RTG].xa, 0); in xfs_open_zone() 457 xas_lock(&xas); in xfs_open_zone() 458 xas_for_each_marked(&xas, xg, ULONG_MAX, XFS_RTG_FREE) in xfs_open_zone() 461 xas_unlock(&xas); in xfs_open_zone() 465 xas_clear_mark(&xas, XFS_RTG_FREE); in xfs_open_zone() 467 xas_unlock(&xas); in xfs_open_zone()
|