]> asedeno.scripts.mit.edu Git - linux.git/commit
XArray: Add cyclic allocation
authorMatthew Wilcox <willy@infradead.org>
Tue, 6 Nov 2018 19:13:35 +0000 (14:13 -0500)
committerMatthew Wilcox <willy@infradead.org>
Wed, 6 Feb 2019 18:32:25 +0000 (13:32 -0500)
commit2fa044e51a1f35d7b04cbde07ec513b0ba195e38
treeca7f9f39820ca4f8241caf7a6eef8f044db5d38a
parenta3e4d3f97ec844de005a679585c04c5c03dfbdb6
XArray: Add cyclic allocation

This differs slightly from the IDR equivalent in five ways.

1. It can allocate up to UINT_MAX instead of being limited to INT_MAX,
   like xa_alloc().  Also like xa_alloc(), it will write to the 'id'
   pointer before placing the entry in the XArray.
2. The 'next' cursor is allocated separately from the XArray instead
   of being part of the IDR.  This saves memory for all the users which
   do not use the cyclic allocation API and suits some users better.
3. It returns -EBUSY instead of -ENOSPC.
4. It will attempt to wrap back to the minimum value on memory allocation
   failure as well as on an -EBUSY error, assuming that a user would
   rather allocate a small ID than suffer an ID allocation failure.
5. It reports whether it has wrapped, which is important to some users.

Signed-off-by: Matthew Wilcox <willy@infradead.org>
Documentation/core-api/xarray.rst
include/linux/xarray.h
lib/test_xarray.c
lib/xarray.c