aboutsummaryrefslogtreecommitdiff
Commit message (Expand)AuthorAgeFilesLines
* Bump to 1.5.1•••Signed-off-by: Michał Górny <mgorny@gentoo.org> HEADv1.5.1mainMichał Górny2026-06-221-1/+1
* Fix memory leak of pollhandle in steve_poll()•••The steve_poll() function would leak memory in form of the pollhandle in case a token is immediately available. Because then the pollhandle is not placed in the waiters queue, where it is eventually deallocated via the ~steve_waiter destructor. Fix this my explicitly destroying the pollhandle if we do not put it in the waiters queue. Signed-off-by: Florian Schmaus <flow@gentoo.org> Part-of: https://codeberg.org/gentoo/steve/pulls/2 Merges: https://codeberg.org/gentoo/steve/pulls/2 Signed-off-by: Michał Górny <mgorny@gentoo.org> Florian Schmaus2026-05-231-1/+6
* Fix token leak if client performs non-blocking poll•••If a client performs a non-blocking poll while no tokens were available, FUSE/CUSE passes a nullptr as the pollhandle argument to steve_poll(). Steve would previously push this nullptr into the waiters queue. Later, when a token became available, the server would wake this "ghost" waiter, permanently reserving a token for a client that was not actually waiting for it. This effectively leaks the token until the client process exited. Fix this by only queuing a waiter request if the pollhandle is non-null (representing an actual sleeping client). Signed-off-by: Florian Schmaus <flow@gentoo.org> Part-of: https://codeberg.org/gentoo/steve/pulls/5 Merges: https://codeberg.org/gentoo/steve/pulls/5 Signed-off-by: Michał Górny <mgorny@gentoo.org> Florian Schmaus2026-05-231-1/+2
* Do not pass an invalid buffer to FUSE in steve_handle_cuse()•••When steve is stopped and the CUSE connection closes, fuse_session_recieve_buf() returns 0. In thise case steve_handle_cuse() shuts down the event loop but did not return, causing an invalid buffer being passed to fuse_session_process_buf(). This causes FUSE to abort, bypassing a clean unmount, which manifests as a memory leak. Fix this by only invoking fuse_session_process_buf() if rd > 0. This also changes the code so that the error handling is only performed if rd != -EINTR && rd != -EAGAIN, as those a transient errors that should be simply ignored. Signed-off-by: Florian Schmaus <flow@gentoo.org> Part-of: https://codeberg.org/gentoo/steve/pulls/3 Merges: https://codeberg.org/gentoo/steve/pulls/3 Signed-off-by: Michał Górny <mgorny@gentoo.org> Florian Schmaus2026-05-221-2/+3
* Run steve service under SCHED_FIFO•••As a system-wide jobserver, steve orchestrates token distribution for parallel builds. Under heavy load, the spawned jobs, e.g., compiler and linker processes quickly saturate all available CPU time. When the system is fully saturated, steve suffers from scheduling starvation, which affects the overall system efficiency. If a client releases a token or requests one, steve may not be scheduled immediately, leading to a form of priority inversion where compute-bound tasks delay the critical path of I/O-bound token dispatch. This causes workers to idle unnecessarily, extending overall build times. Since steve's workload is strictly I/O-bound, i.e., reading and writing small pipe messages, and its CPU footprint is minuscule, it is an ideal candidate for higher-priority fifo (real-time) scheduling. Moving it to SCHED_FIFO ensures that token dispatch preempts standard compilation tasks instantly, maintaining high system utilization. The SCHED_FIFO priority is kept at a moderate real-time level of 10 to easily outrank standard user-space workloads without interfering with critical kernel threads like IRQ handlers. Signed-off-by: Florian Schmaus <flow@gentoo.org> Part-of: https://codeberg.org/gentoo/steve/pulls/4 Merges: https://codeberg.org/gentoo/steve/pulls/4 Signed-off-by: Michał Górny <mgorny@gentoo.org> Florian Schmaus2026-05-221-0/+2
* Bump to 1.5.0•••Signed-off-by: Michał Górny <mgorny@gentoo.org> v1.5.0Michał Górny2026-01-301-1/+1
* stevie: Provide -j value in MAKEFLAGS•••Provide the job count as -j in MAKEFLAGS, to accommodate clients using that as an upper job bound (e.g. LLVM). Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2026-01-301-0/+13
* Include waiters in SIGUSR1 report•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2026-01-101-2/+15
* Bump to 1.4.0•••Signed-off-by: Michał Górny <mgorny@gentoo.org> v1.4.0Michał Górny2025-12-301-1/+1
* Add sanity checks for --min-memory-avail•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-301-2/+26
* Print interrupt message to stderr•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-301-1/+1
* Refactor more meminfo logic•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-301-7/+11
* Remove unused flags arg•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-301-1/+1
* Allow compat ioctls•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-301-5/+0
* Replace sigabbrev_np() for compatibility with musl•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-293-4/+22
* Move /proc/meminfo search into a separate function•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-251-25/+41
* Support adjusting min-memory-avail via stevie•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-253-8/+37
* Add missing includes•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-253-0/+5
* Initial support for limiting memory usage•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-241-42/+134
* Bump to 1.3.1•••Signed-off-by: Michał Górny <mgorny@gentoo.org> v1.3.1Michał Górny2025-12-241-1/+1
* Use signed integers for job count, to avoid wraparound issues•••Use signed integers throughout. Admittedly, that's not the prettiest solution possible but it's the easiest way to avoid conversion issues. Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-231-3/+3
* README: add compatibility notes•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-221-0/+27
* README: list some features•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-221-0/+20
* README: mention stevie•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-221-0/+16
* README: split install instructions, update usage•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-221-21/+74
* Specify minimum meson version•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-221-0/+1
* Bump to 1.3.0•••Signed-off-by: Michał Górny <mgorny@gentoo.org> v1.3.0Michał Górny2025-12-221-1/+1
* Update docs ofr new groups•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-211-2/+3
* Share some common message parts•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-201-28/+55
* Move sources to src/ subdirectory•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-205-2/+2
* Fix short -s option•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-191-1/+1
* Report process cmdline in more messages, and add bounds checking•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-191-66/+88
* Optimize open handler•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-191-27/+33
* Read /proc/*/cmdline into std::string•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-191-18/+15
* Free fuse_buf•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-191-3/+3
* Warn about incorrect tokens once per process•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-181-1/+3
* Use unique tokens to track specific jobs and report their runtimes•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-181-16/+80
* Pass steve_process to steve_get_token_char()•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-181-5/+5
* Return the extra written token unchanged to client•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-181-11/+28
* Control /dev/steve access via jobserver group•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-171-1/+1
* Start steve as steve user•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-172-0/+3
* Bump to 1.2.0•••Signed-off-by: Michał Górny <mgorny@gentoo.org> v1.2.0Michał Górny2025-12-131-1/+1
* Add a fast path for failed start•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-131-0/+2
* Create test devices in a subdirectory, for easy ACL•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-131-1/+1
* Add a test for reclaiming tokens on exit•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-131-2/+20
* Add writing tests•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-131-0/+37
* Add a test for per-process limits•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-131-0/+23
* Enable test timeouts if pytest-timeout is available•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-132-1/+2
* Add initial tests•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-135-7/+89
* Handle EAGAIN/EINTR from fuse_receive_buf()•••Signed-off-by: Michał Górny <mgorny@gentoo.org> Michał Górny2025-12-131-1/+1