summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2024-02-16Release 3.1.13.1.1Tavian Barnes
2024-02-15ioq: Add batched ioqq_push/pop operationsTavian Barnes
2024-02-15ioq: Don't push immediately in ioq_check_cancel()Tavian Barnes
2024-02-15ioq: Add a missing close() if bfs_opendir() failsTavian Barnes
2024-02-14ioq: Don't use the symbolic IO_WQ_[UN]BOUND indicesTavian Barnes
They are only available since liburing 2.2, which is newer than CI.
2024-02-14ioq: Factor out io_uring initializationTavian Barnes
2024-02-14ioq: Make -j also limit the io_uring worker threadsTavian Barnes
2024-02-14ioq: Replay IOQ_STOP messages rather than spam themTavian Barnes
2024-02-14ioq: Pack ioq_ent args structsTavian Barnes
2024-02-14bftw: Document which bftw_file nodes go with which listsTavian Barnes
2024-02-14expr: Pack struct bfs_expr a bitTavian Barnes
2024-02-14stat: Pack struct bfs_stat a bitTavian Barnes
2024-02-12eval: Add thousands separators to -statusTavian Barnes
2024-02-12sanity: Don't use self-init for uninit()Tavian Barnes
Self-initialization like bool ret = ret; is a GCC trick to suppress uninitialized variable warnings, but it's not actually well-defined, and will trip a recent enough MemorySanitizer: src/eval.c:1088:13: runtime error: load of value 128, which is not a valid value for type 'bool'
2024-02-12ioq: Get rid of IOQ_STRIDETavian Barnes
Benchmarks show it hurts more than it helps.
2024-02-12ioq: Shrink the io_uringsTavian Barnes
2024-02-12bench: Add a stat() benchmarkTavian Barnes
2024-02-07Merge pull request #130 from thesamesam/gentooTavian Barnes
README.md: bfs is now in Gentoo as sys-apps/bfs
2024-02-07README.md: bfs is now in Gentoo as sys-apps/bfsSam James
2024-02-06Release 3.13.1Tavian Barnes
2024-02-06opt: Enable BFTW_STAT when profitableTavian Barnes
2024-02-06ctx: Fill in ctx->threads earlierTavian Barnes
2024-02-06color: New API to check if stat() is necessaryTavian Barnes
2024-02-06bftw: stat() files asynchronouslyTavian Barnes
2024-02-05mtab: Take the basename directly in bfs_might_be_mount()Tavian Barnes
This avoids some hot xbaseoff() calls.
2024-02-05tests: Fix --stopTavian Barnes
2024-02-04build: Rename test targetsTavian Barnes
2024-02-03ci/macos: Try the new M1 runnerTavian Barnes
2024-02-03tests: Run more integration tests by defaultTavian Barnes
The traversal behaviour of -j1, -j2, and -jN (N >= 3) are all different enough to be worth running the whole test suite against them. Sorting (-s) is another dimension worth testing. Having these tests run automatically would have caught some recently-fixed bugs earlier.
2024-02-03tests: Implement jobserver inheritanceTavian Barnes
2024-02-01tests: Don't clobber inherited FDsTavian Barnes
Rather than attempting to close any unexpected FDs, just count them and adjust our ulimit -n calls to account for them.
2024-02-01tests: Use variable redirections to dup std{out,err}Tavian Barnes
Previously, we hardcoded file descriptors 3 and 4 for duplicating stdandard output/error respectively. In preparation for keeping inherited FDs open, switch to using bash's variable redirection feature to dynamically assign FDs. This feature is only available from bash 4.1 onwards, so this marks the end of our support for bash 3. macOS users will need to install a modern bash version to run our tests.
2024-02-01ci/freebsd: Use the system compilerTavian Barnes
Release builds work now on FreeBSD 14.
2024-02-01bftw: Always block in bftw_pop_dir() with multiple threadsTavian Barnes
2024-02-01bftw: Don't immediately pin open directoriesTavian Barnes
It is undesirable to close a directory that we haven't read yet to free up cache capacity, but it's worse to fail to open the next directory because too many upcoming directories are pinned. This could happen when sorting, because then we can't prioritize the already-opened ones.
2024-02-01bftw: Allow forcing bfs_dir allocation from the main threadTavian Barnes
When sorting, we can be forced to pop an unopened directory. If enough other directories are already open, that can lead to ENOMEM when we try to open it synchronously. To avoid this, force allocations from the main thread to be attempted even if they would go over the limit. Also, fix the accounting in bftw_allocdir() if allocation fails.
2024-02-01bftw: Kill trivial bftw_queue_balance() helperTavian Barnes
2024-02-01bfstd: Don't shadow FreeBSD's fflags_tTavian Barnes
2024-01-31bftw: Actually stop if the callback returns BFTW_STOPTavian Barnes
Otherwise, bftw_ids() or bftw_eds() might keep going! Fixes: 5f16169 ("bftw: Share the bftw_state between iterations of ids/eds")
2024-01-31opt: Charge eval_flags() for a stat() callTavian Barnes
2024-01-31bftw: Optimize -s -j2 searchesTavian Barnes
Maintaining balance and strict ordering at the same time forces too much work onto the main thread.
2024-01-31bftw: Use a bftw_queue for files tooTavian Barnes
2024-01-31bftw: New bftw_queue abstractionTavian Barnes
2024-01-30list: Return the next cursor from SLIST_INSERT()Tavian Barnes
2024-01-22eval: Squelch an uninitialized variable warningTavian Barnes
2024-01-18ioq: Implement ioq_stat()Tavian Barnes
2024-01-18ioq: Refactor to take advantage of -WswitchTavian Barnes
2024-01-18stat: Expose bfs_{fstatat,statx}_flags()Tavian Barnes
2024-01-18stat: Expose bfs_stat{,x}_convert()Tavian Barnes
2024-01-17tests/posix: Avoid catastrophic backtrackingTavian Barnes
Using -path 'deep/*/*/.../*' to simulate -mindepth 18 falls off a performance cliff on systems that use backtracking for fnmatch(). This was observed on macOS 12.4. Instead, just use -type f.