Allocate an object used to track an IO.
The algorithm locklessly allocates IO objects using an atomic increment with the following rules
- at most check each object once for availability
- IO objects are allocated sequentially
- once the index is out of range, all callers will wait on the top level lock to serialize resetting the counter
- objects are not required to complete in order
- Parameters
-
| io_pool | pointer to IO Pool object |
- Returns
- pointer to a new object, NULL if none available
Definition at line 242 of file ocs_io.c.