mergerfs/vendored/libfuse/include
Antonio S. Musumeci 3bcf66cdaa Fix monitor and idle-exit racing past min_threads
The hill-climb monitor and idle self-exit paths could both shrink
the pool past min_threads. The monitor read thread count, released
the lock, then called remove_thread - but between those steps an
idle worker could also self-exit, dropping below the threshold.

Three changes:
- _remove_thread_locked now checks min_threads (from ScalingConfig)
  under the same lock as the size check, refusing removal if at or
  below the bound.
- Idle self-exit replaced with _try_remove_self_if_above which
  atomically checks thread count and erases under a single lock
  acquisition, closing the TOCTOU window.
- The previous _remove_self is retained for the non-scaling paths
  (poison pill exit during set_threads/remove_thread).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 20:36:48 -04:00
..
moodycamel Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
base_types.h Add support for FUSE_COPY_FILE_RANGE_64 2026-04-01 23:20:05 -05:00
bounded_queue.hpp Fix semaphore drift from enqueue_unbounded in BoundedQueue 2026-04-09 20:21:36 -04:00
debug.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
extern_c.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fatal.hpp Use fatal::abort() rather than assert in places 2026-03-24 21:13:34 -04:00
fs_dirent64.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse.h Rework open file resource management 2026-03-31 19:53:17 -04:00
fuse_attr.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_cfg.hpp Add FUSE request_timeout 2026-04-01 23:20:05 -05:00
fuse_common.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_conn_info.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_dirent.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_direntplus.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_dirents.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_entry.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_kernel.h Add support for FUSE_COPY_FILE_RANGE_64 2026-04-01 23:20:05 -05:00
fuse_lowlevel.h Add support for FUSE_COPY_FILE_RANGE_64 2026-04-01 23:20:05 -05:00
fuse_msgbuf.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_msgbuf_t.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_opt.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_pollhandle.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_req.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_req_ctx.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_timeouts.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
invocable.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
kvec.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
maintenance_thread.hpp Move maintainence thread func take u64 rather than int 2026-03-24 21:13:34 -04:00
mutex.hpp Move scope_guard to vendored/ 2026-03-24 21:13:34 -04:00
mutex_debug.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
mutex_ndebug.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
objpool.hpp fix objpool: add size tracking, improve allocation matching; fix msgbuf: clear pool on size change 2026-03-24 21:13:34 -04:00
stat_utils.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
syslog.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
thread_pool.hpp Fix monitor and idle-exit racing past min_threads 2026-04-09 20:36:48 -04:00