Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | ioq: Submit and pop requests in batches | Tavian Barnes | 2024-12-03 | 1 | -17/+32 |
| | | | | | The new ioq_submit() function is now necessary to call to ensure the pending request batch is flushed. | ||||
* | ioq: Add more io_uring setup flags | Tavian Barnes | 2024-12-03 | 1 | -20/+55 |
| | |||||
* | ioq: Refactor io_uring submission logic | Tavian Barnes | 2024-12-03 | 1 | -94/+145 |
| | |||||
* | ioq: Use ioq_batch for both pushing and popping | Tavian Barnes | 2024-12-03 | 1 | -47/+84 |
| | |||||
* | ioq: Add a hash function between slots and monitors | Tavian Barnes | 2024-12-03 | 1 | -1/+11 |
| | | | | | | This helps avoid situations where multiple waiters block on different slots using the same monitor, which happened more often than expected due to correlations caused by batching. | ||||
* | ioq: Prefetch pointers before popping them | Tavian Barnes | 2024-12-03 | 1 | -0/+8 |
| | | | | | Also, cache-align struct ioq_ent to avoid false sharing when two workers are handling neighbouring requests. | ||||
* | ioq: Add an ioq_nop() operation for benchmarking | Tavian Barnes | 2024-12-02 | 1 | -0/+28 |
| | |||||
* | ioq: Set the worker thread names to ioq-%d | Tavian Barnes | 2024-11-27 | 1 | -2/+8 |
| | |||||
* | ioq: Enable IORING_SETUP_SUBMIT_ALL | Tavian Barnes | 2024-11-20 | 1 | -2/+18 |
| | |||||
* | ioq: Check for io_uring_register_iowq_max_workers() before using it | Tavian Barnes | 2024-11-11 | 1 | -0/+3 |
| | | | | | | | This allows us to build against liburing as old as version 2.0, which is apparently shipped by the latest Amazon Linux distribution. Fixes: https://github.com/tavianator/bfs/issues/147 | ||||
* | build: Move feature test macros to prelude.h | Tavian Barnes | 2024-08-28 | 1 | -1/+0 |
| | | | | | | This replaces the explicit CPPFLAGS list in flags.mk with just `-include src/prelude.h`, shortening our compiler command lines and allowing them to be easily documented. | ||||
* | prelude: Split bfs-specific utilities into new bfs.h header | Tavian Barnes | 2024-08-28 | 1 | -0/+3 |
| | |||||
* | diag: Get rid of bfs_static_assert() | Tavian Barnes | 2024-08-28 | 1 | -2/+1 |
| | | | | | In most cases, it's not too annoying to specify a message. For tests/bit.c, we can manually polyfill the 1-argument version. | ||||
* | prelude: Simplify attributes | Tavian Barnes | 2024-07-28 | 1 | -2/+2 |
| | |||||
* | ioq: Do more in the branch-free slot helper | Tavian Barnes | 2024-06-20 | 1 | -11/+11 |
| | |||||
* | configure: Use --with/--without for libraries | Tavian Barnes | 2024-05-24 | 1 | -13/+13 |
| | |||||
* | ioq: Fix uninitialized values in ioq_create() cleanup path | Tavian Barnes | 2024-04-24 | 1 | -4/+1 |
| | | | | | | | | I switched from ZALLOC_FLEX() to ALLOC_FLEX() in hopes that msan would catch uninitialized values in ioq_thread_create(), but in doing so, forgot to initialize all fields before the first goto fail. Fixes: f64f76b ("ioq: Copy ring_ops from the previous thread") | ||||
* | Rename config.h to prelude.h | Tavian Barnes | 2024-04-19 | 1 | -1/+1 |
| | |||||
* | ioq: Fix some allocation failure paths | Tavian Barnes | 2024-03-20 | 1 | -2/+4 |
| | |||||
* | Re-run include-what-you-use | Tavian Barnes | 2024-03-11 | 1 | -2/+3 |
| | |||||
* | ioq: Copy ring_ops from the previous thread | Tavian Barnes | 2024-03-06 | 1 | -1/+4 |
| | | | | | | Otherwise threads 2-N won't use io_uring at all! Oops. Fixes: 8bc72d6c ("ioq: Probe for supported io_uring operations") | ||||
* | ioq: Probe for supported io_uring operations | Tavian Barnes | 2024-02-28 | 1 | -18/+67 |
| | |||||
* | ioq: Remove some branches from ioq_slot_{push,pop}() | Tavian Barnes | 2024-02-18 | 1 | -12/+21 |
| | |||||
* | ioq: Ensure ioq_ent is sufficiently aligned | Tavian Barnes | 2024-02-16 | 1 | -1/+1 |
| | | | | | | | The natural alignment of struct ioq_ent is only 2 on m68k, so over-align it to at least 4 bytes on all platforms. Link: https://buildd.debian.org/status/fetch.php?pkg=bfs&arch=m68k&ver=3.1-1&stamp=1707699583 | ||||
* | ioq: Add batched ioqq_push/pop operations | Tavian Barnes | 2024-02-15 | 1 | -49/+127 |
| | |||||
* | ioq: Don't push immediately in ioq_check_cancel() | Tavian Barnes | 2024-02-15 | 1 | -10/+6 |
| | |||||
* | ioq: Add a missing close() if bfs_opendir() fails | Tavian Barnes | 2024-02-15 | 1 | -0/+2 |
| | |||||
* | ioq: Don't use the symbolic IO_WQ_[UN]BOUND indices | Tavian Barnes | 2024-02-14 | 1 | -2/+2 |
| | | | | They are only available since liburing 2.2, which is newer than CI. | ||||
* | ioq: Factor out io_uring initialization | Tavian Barnes | 2024-02-14 | 1 | -37/+73 |
| | |||||
* | ioq: Make -j also limit the io_uring worker threads | Tavian Barnes | 2024-02-14 | 1 | -0/+9 |
| | |||||
* | ioq: Replay IOQ_STOP messages rather than spam them | Tavian Barnes | 2024-02-14 | 1 | -4/+5 |
| | |||||
* | ioq: Get rid of IOQ_STRIDE | Tavian Barnes | 2024-02-12 | 1 | -20/+5 |
| | | | | Benchmarks show it hurts more than it helps. | ||||
* | ioq: Shrink the io_urings | Tavian Barnes | 2024-02-12 | 1 | -4/+2 |
| | |||||
* | ioq: Implement ioq_stat() | Tavian Barnes | 2024-01-18 | 1 | -10/+90 |
| | |||||
* | ioq: Refactor to take advantage of -Wswitch | Tavian Barnes | 2024-01-18 | 1 | -71/+91 |
| | |||||
* | ioq: Use the negative errno convention | Tavian Barnes | 2024-01-13 | 1 | -21/+11 |
| | |||||
* | config: New variadic attr(...) macro | Tavian Barnes | 2023-12-18 | 1 | -2/+2 |
| | |||||
* | ioq: Don't crash on allocation failures | Tavian Barnes | 2023-11-15 | 1 | -0/+4 |
| | |||||
* | config: New attr_noinline and attr_cold macros | Tavian Barnes | 2023-11-09 | 1 | -0/+2 |
| | |||||
* | ioq: Implement a better non-blocking pop | Tavian Barnes | 2023-11-09 | 1 | -90/+186 |
| | |||||
* | dir: Add a flags parameter to bfs_opendir() | Tavian Barnes | 2023-10-17 | 1 | -3/+4 |
| | |||||
* | ioq: Use io_uring | Tavian Barnes | 2023-10-02 | 1 | -37/+270 |
| | | | | Closes #65. | ||||
* | Formatting fixes | Tavian Barnes | 2023-09-27 | 1 | -1/+1 |
| | |||||
* | ioq: New ioq_slot_monitor() helper | Tavian Barnes | 2023-08-23 | 1 | -4/+8 |
| | |||||
* | ioq: Try harder to avoid setting IOQ_BLOCKED | Tavian Barnes | 2023-07-12 | 1 | -6/+16 |
| | |||||
* | ioq: Separate slot and queue operations | Tavian Barnes | 2023-07-11 | 1 | -49/+75 |
| | |||||
* | ioq: Implement async close() and closedir() | Tavian Barnes | 2023-07-10 | 1 | -72/+103 |
| | |||||
* | ioq: New ioq_capacity() function | Tavian Barnes | 2023-07-06 | 1 | -2/+7 |
| | |||||
* | ioq: Don't write to an empty slot in ioqq_trypop() | Tavian Barnes | 2023-07-04 | 1 | -6/+10 |
| | |||||
* | thread: Wrap more pthread APIs | Tavian Barnes | 2023-06-26 | 1 | -6/+3 |
| |