opnsense-src/sys/kern
Olivier Certner 7a9ea03e4b
vfs: vn_alloc(): Stop always calling vn_alloc_hard() and direct reclaiming
Commit ab05a1cf32 intended to revert commit 8733bc277a
("vfs: don't provoke recycling non-free vnodes without a good reason"),
but due to intervening changes in commit 054f45e026 ("vfs: further
speed up continuous free vnode recycle"), it also had to revert part of
it.  In particular, while removing the whole 'if (vn_alloc_cyclecount !=
0)' block, it inadvertantly removed the code block resetting
'vn_alloc_cyclecount' to 0 and skipping direct vnode reclamation (done
further below through vnlru_free_locked_direct()), which had been
outside the 'if' before the intervening commit.

Removing this block instead of reinstating it in practice causes
'vn_alloc_cyclecount' to (almost) never be 0, making vn_alloc() always
call vn_alloc_hard(), which takes the 'vnode_list_mtx' mutex.  In other
words, this disables the fast path.  [The reverted commit, which
introduced the 'if (vn_alloc_cyclecount != 0)' guarding this block,
actually never executed it because it also had the bug that
'vn_alloc_cyclecount' would always stay at 0, hiding its usefulness.]

Additionally, not skipping direct vnode reclamation even when there are
less vnodes than 'kern.maxvnodes' not only causes unnecessary contention
but also plain livelocks as vnlru_free_locked_direct() does not itself
check whether there are actually "free" (not referenced) vnodes to be
deallocated, and will blindly browse all the vnode list until it finds
one (which it may not, or only a few ones at the end).  As the fast path
was disabled, all threads in the system would soon be competing for the
vnode list lock, outpacing the vnlru process that could never actually
recycle vnodes in a more agressive manner (i.e., even if they have
a non-zero hold count).  And we could more easily get into this
situation, as each vnode allocation was reducing the count of "free"
vnodes, even if entirely new vnodes could be allocated instead.  This
part was mitigated by the vnlru process (before the tipping point
described above), which explains why the mechanism would not always
livelock.

Not skipping direct vnode reclamation was arguably a bug introduced by
the intervening commit (054f45e026), but was mitigated by
vn_alloc_hard() not being called in the fast path.  The revert commit,
by disabling the fast path, made it significantly annoying (to the point
of getting a few livelocks a week in some of my workloads).

Restore the reset of 'vn_alloc_cyclecount' to 0 and skip direct
reclamation when the current number of vnodes is below the
'kern.maxvnodes' limit, indicating we can start allocating a new 'struct
vnode' right away.  While here, fix the comparison with the limit when
'bumped' is true.

Reviewed by:    kib (older version), avg
Tested by:      avg, olce
Fixes:          ab05a1cf32 (revert of "vfs: don't provoke recycling non-free vnodes without a good reason")
Fixes:          054f45e026 ("vfs: further speed up continuous free vnode recycle")
MFC after:      5 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D50338

(cherry picked from commit d90c9c24e2)
(cherry picked from commit ce6b7a5919da518715d6163baa42035d6d2c1bd0)

Approved by:    re (cperciva)
2025-05-21 12:07:15 +02:00
..
bus_if.m newbus: Add a set of bus resource helpers for nexus-like devices 2024-01-03 12:47:08 -08:00
clock_if.m sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
cpufreq_if.m sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
device_if.m sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
firmw.S sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
genassym.sh sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
genoffset.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
genoffset.sh sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
imgact_aout.c sysentvec: add SV_SIGSYS flag 2023-10-09 06:24:31 +03:00
imgact_binmisc.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
imgact_elf.c Add NT_PROCSTAT_KQUEUES core note 2025-04-07 04:28:22 +03:00
imgact_elf32.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
imgact_elf64.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
imgact_shell.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
init_main.c Open-code proc_set_cred_init() 2025-01-16 19:06:46 +01:00
init_sysent.c New setcred() system call and associated MAC hooks 2025-04-03 21:31:03 +02:00
kern_acct.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_alq.c alq, siftr: add panic/debugger checks to shutdown hooks 2023-12-08 18:02:44 -04:00
kern_boottrace.c boottrace: Stop checking for failures from realloc(M_WAITOK) 2024-09-30 12:44:13 +08:00
kern_clock.c clock: Add a long ticks variable, ticksl 2025-02-14 19:25:18 +00:00
kern_clocksource.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_condvar.c ktrace: Fix the build when options KTRACE is not configured 2024-03-29 09:53:05 -04:00
kern_conf.c Giant: Postpone removal of Giant-locked drivers until 15 2023-11-02 00:22:22 +08:00
kern_cons.c vt/sc: retire logic to select vt(4) by default for UEFI boot 2024-08-01 12:10:26 -04:00
kern_context.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_cpu.c cpufreq: Use a real device_probe routine 2024-11-30 21:46:04 -05:00
kern_cpuset.c ktrace: Record cpuset violations with KTR_CAPFAIL 2024-05-11 18:57:44 -05:00
kern_ctf.c sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
kern_descrip.c stat(2): add st_bsdflags field 2025-04-09 03:53:17 +03:00
kern_devctl.c kern: Make fileops and filterops tables const where possible 2024-12-03 01:03:42 +00:00
kern_dtrace.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_dump.c kerneldump: fix incorrect SETSIZE to BIT_COPY_STORE_REL when livedump 2024-11-30 06:53:49 +00:00
kern_environment.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_et.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_event.c kern_proc_kqueues_out(): maxlen == -1 means there is no maxlen 2025-04-07 04:28:22 +03:00
kern_exec.c ktrace: Record namei violations with KTR_CAPFAIL 2024-05-11 18:57:44 -05:00
kern_exit.c proc: Disallow re-enabling of process itimers during exit 2025-04-15 02:25:24 +00:00
kern_fail.c kern_fail: Stop checking for failures from fp_malloc(M_WAITOK) 2024-09-30 12:44:13 +08:00
kern_ffclock.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_fork.c thread: Simplify sanitizer integration with thread creation 2025-02-07 14:46:53 +00:00
kern_hhook.c hhook: Sprinkle const qualifiers where appropriate 2024-10-08 12:44:54 +08:00
kern_idle.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_intr.c ithread: Improve synchronization in ithread_destroy() 2024-08-20 13:27:05 +00:00
kern_jail.c New setcred() system call and associated MAC hooks 2025-04-03 21:31:03 +02:00
kern_kcov.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_khelp.c khelp: Sprinkle const qualifiers where appropriate 2024-10-08 12:44:54 +08:00
kern_kthread.c kthread: Set *tdptr earlier in kproc_kthread_add() 2024-05-02 09:25:10 -04:00
kern_ktr.c ktr: Make debug.ktr.verbose available whenever KTR is configured 2025-04-24 13:20:52 +00:00
kern_ktrace.c ktr: Use STAILQ_EMPTY_ATOMIC when checking for records in ktr_drain() 2025-03-07 22:51:48 +00:00
kern_linker.c sysctl(9): Enable vnet sysctl variables to be loader tunable 2025-01-24 23:35:49 +08:00
kern_lock.c lockmgr/rmlock/rwlock/sx: Make various assertions more robust 2025-04-29 10:44:01 -04:00
kern_lockf.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_lockstat.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_loginclass.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_malloc.c malloc: extend malloc_usable_size() for contigmalloc 2025-04-18 14:35:56 +00:00
kern_mbuf.c mb_unmapped_to_ext(): fix m_free()/m_freem() use 2025-03-17 02:48:32 +02:00
kern_membarrier.c Add membarrier(2) 2023-08-23 03:02:21 +03:00
kern_mib.c sysctl(9): Ease exporting struct sizes; Discourage doing that 2025-05-13 14:41:33 +02:00
kern_module.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_mtxpool.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_mutex.c mtx: Include the mutex pointer in the panic message for destroyed locks 2025-04-29 10:43:48 -04:00
kern_ntptime.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_osd.c osd: Constify signature of osd_register() 2025-01-16 19:06:52 +01:00
kern_physio.c uio: Use switch statements when handling UIO_READ vs UIO_WRITE 2024-11-30 08:55:57 -05:00
kern_pmc.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_poll.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_priv.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_proc.c vm_object: do not assume that un_pager.devp.dev is cdev 2024-11-13 01:19:18 +02:00
kern_procctl.c ktrace: Record signal violations with KTR_CAPFAIL 2024-05-11 18:57:44 -05:00
kern_prot.c cred: fix struct credbatch to use long for refcount 2025-04-15 12:40:02 -07:00
kern_racct.c kern_racct.c: Don't compile if RACCT undefined 2024-02-27 11:37:33 +01:00
kern_rangelock.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_rctl.c kern_rctl.c: Minimal includes when RCTL not defined 2024-02-27 11:37:23 +01:00
kern_resource.c sysctl: add KERN_PROC_RLIMIT_USAGE 2024-10-05 10:08:56 +03:00
kern_rmlock.c rwmlock/rwlock/sx: Print the pointer of destroyed locks in panic messages 2025-04-29 10:44:08 -04:00
kern_rwlock.c rwmlock/rwlock/sx: Print the pointer of destroyed locks in panic messages 2025-04-29 10:44:08 -04:00
kern_sdt.c sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
kern_sema.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_sendfile.c Abstract UIO allocation and deallocation. 2024-03-08 23:27:20 -05:00
kern_sharedpage.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_shutdown.c Annotate 'rebooting' with __read_mostly 2024-02-20 09:27:03 +01:00
kern_sig.c ptrace(2): expand ability to fetch syscall parameters 2025-04-07 04:28:22 +03:00
kern_switch.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_sx.c rwmlock/rwlock/sx: Print the pointer of destroyed locks in panic messages 2025-04-29 10:44:08 -04:00
kern_synch.c ktrace: Fix the build when options KTRACE is not configured 2024-03-29 09:53:05 -04:00
kern_syscalls.c syscalls: fix missing SIGSYS for several ENOSYS errors 2023-10-09 06:24:31 +03:00
kern_sysctl.c sysctl: Harden sysctl_handle_string() against unterminated string 2025-02-13 18:19:57 +08:00
kern_tc.c clock: Add a long ticks variable, ticksl 2025-02-14 19:25:18 +00:00
kern_thr.c kern_thr.c: normalize includes 2024-04-30 03:48:09 +03:00
kern_thread.c thread: Add a missing include of asan.h 2025-02-07 14:46:53 +00:00
kern_time.c proc: Disallow re-enabling of process itimers during exit 2025-04-15 02:25:24 +00:00
kern_timeout.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_tslog.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_ubsan.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_umtx.c umtx: Fix a bug in do_lock_pp() 2025-03-08 00:37:37 +00:00
kern_uuid.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_vnodedumper.c livedump: Silence KASAN and KMSAN when livedumping 2024-12-13 01:34:14 +00:00
kern_xxx.c compat_freebsd4: Add const qualifier to the local variable s inside function freebsd4_uname() 2024-05-28 12:21:20 +08:00
ksched.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
link_elf.c sysctl(9): Enable vnet sysctl variables to be loader tunable 2025-01-24 23:35:49 +08:00
link_elf_obj.c sysctl(9): Enable vnet sysctl variables to be loader tunable 2025-01-24 23:35:49 +08:00
linker_if.m sysctl(9): Enable vnet sysctl variables to be loader tunable 2025-01-24 23:35:49 +08:00
Make.tags.inc sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
Makefile makesyscalls: don't make syscall.mk by default 2023-12-13 23:07:06 +00:00
md4c.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
md5c.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
msi_if.m sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
p1003_1b.c sched_setscheduler(2): Change realtime privilege check 2024-02-20 09:27:08 +01:00
pic_if.m sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
posix4_mib.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
sched_4bsd.c sched: Simplify sched_lend_user_prio_cond() 2024-05-09 22:26:21 +09:00
sched_ule.c sched: Simplify sched_lend_user_prio_cond() 2024-05-09 22:26:21 +09:00
serdev_if.m sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
stack_protector.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_acl_nfs4.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_acl_posix1e.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_asan.c thread: Simplify sanitizer integration with thread creation 2025-02-07 14:46:53 +00:00
subr_atomic64.c atomics: Constify loads: Fix powerpc build 2025-01-16 19:07:01 +01:00
subr_autoconf.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_blist.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_boot.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_bufring.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_bus.c new-bus: Add taskqueue_bus to process hot-plug device events 2025-04-29 10:34:05 -04:00
subr_bus_dma.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_busdma_bounce.c busdma_bounce: Replace a SYSINIT with static initializations 2024-11-19 14:15:21 +00:00
subr_busdma_bufalloc.c busdma: uma_zcreate() does not fail 2024-05-02 09:25:08 -04:00
subr_capability.c capsicum: introduce cap_rights_is_empty Function 2024-06-05 11:55:17 -04:00
subr_clock.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_clockcalib.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_compressor.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_counter.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_coverage.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_csan.c atomic: Update interceptor function signatures after commit 5e9a82e898 2025-01-16 19:07:01 +01:00
subr_devmap.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_devstat.c sysctl(9): Ease exporting struct sizes; Discourage doing that 2025-05-13 14:41:33 +02:00
subr_disk.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_dummy_vdso_tc.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_early.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_epoch.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_eventhandler.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_fattime.c sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
subr_filter.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_firmware.c firmware: unbreak armv7 2024-10-16 08:19:21 -06:00
subr_gtaskqueue.c gtaskqueue: Fix a typo 2024-01-07 11:56:04 -05:00
subr_hash.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_hints.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_intr.c intrng: Allow alternative IPI PICs to be registered and used 2024-09-07 00:59:02 +01:00
subr_kdb.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_kobj.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_lock.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_log.c kern: Make fileops and filterops tables const where possible 2024-12-03 01:03:42 +00:00
subr_mchain.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_memdesc.c memdesc: Add routines for copying data to/from memory descriptors 2023-07-31 13:24:44 -07:00
subr_module.c linker: Add MODINFOMD_SPLASH type 2024-07-29 18:37:42 +02:00
subr_msan.c atomic: Update interceptor function signatures after commit 5e9a82e898 2025-01-16 19:07:01 +01:00
subr_msgbuf.c sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
subr_param.c clock: Add a long ticks variable, ticksl 2025-02-14 19:25:18 +00:00
subr_pcpu.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_pctrie.c pctrie: change for vm_radix compatibility 2023-08-21 12:28:51 -05:00
subr_physmem.c physmem ram: Don't reserve excluded regions 2025-02-27 08:09:21 -05:00
subr_pidctrl.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_power.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_prf.c Abstract UIO allocation and deallocation. 2024-03-08 23:27:20 -05:00
subr_prng.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_prof.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_rangeset.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_rman.c rman: Add rman_get/set_type 2025-02-27 08:09:22 -05:00
subr_rtc.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_sbuf.c Remove my middle name. 2023-08-17 15:08:30 +02:00
subr_scanf.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_sfbuf.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_sglist.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_sleepqueue.c sleepqueue: Fix the comment for sleepq_switch() 2024-11-19 14:15:07 +00:00
subr_smp.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_smr.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_stack.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_stats.c Reinstate returning EOVERFLOW from stats_v1_blob_clone() 2025-02-14 19:25:19 +00:00
subr_syscall.c audit: Fix short-circuiting in syscallenter() 2025-01-17 13:18:51 +00:00
subr_taskqueue.c Schedule fast taskqueue callouts on right CPU. 2024-01-19 11:24:35 -05:00
subr_terminal.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_ticks.S clock: Use .balign to align ticksl 2025-02-14 19:25:18 +00:00
subr_trap.c Optimize HPTS so that little work is done until we have a hpts thread that is over the connection threshold 2024-04-24 22:37:40 +02:00
subr_turnstile.c turnstile: Mention the lock name when panicking due to a sleeping thread 2024-09-03 14:54:42 +00:00
subr_uio.c uio: Use switch statements when handling UIO_READ vs UIO_WRITE 2024-11-30 08:55:57 -05:00
subr_unit.c subr_unit.c: another attempt to fix the build 2023-08-18 19:28:42 +03:00
subr_vmem.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_witness.c witness: Unconditionally initialize out-params for witness_save() 2023-10-24 09:20:55 -04:00
sys_capability.c ktrace: Record detailed ECAPMODE violations 2024-05-11 18:57:44 -05:00
sys_eventfd.c kern/sys_eventfd.c: fix includes 2025-03-20 05:13:38 +02:00
sys_generic.c kern: restore signal mask before ast() for pselect/ppoll 2024-12-10 14:02:52 -06:00
sys_getrandom.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
sys_pipe.c Add sysctl kern.proc.kqueue 2025-04-07 04:28:20 +03:00
sys_procdesc.c kern: Make fileops and filterops tables const where possible 2024-12-03 01:03:42 +00:00
sys_process.c ptrace: Do not pass a negative resid to proc_rwmem() 2025-04-15 02:25:24 +00:00
sys_socket.c kern: Make fileops and filterops tables const where possible 2024-12-03 01:03:42 +00:00
sys_timerfd.c kern: Make fileops and filterops tables const where possible 2024-12-03 01:03:42 +00:00
syscalls.c New setcred() system call and associated MAC hooks 2025-04-03 21:31:03 +02:00
syscalls.conf makesyscalls: don't make syscall.mk by default 2023-12-13 23:07:06 +00:00
syscalls.master New setcred() system call and associated MAC hooks 2025-04-03 21:31:03 +02:00
systrace_args.c New setcred() system call and associated MAC hooks 2025-04-03 21:31:03 +02:00
sysv_ipc.c sysvshm: add shmobjinfo() function to find key/seq of the segment backed by obj 2024-10-15 17:50:16 +03:00
sysv_msg.c sysv_ipc: remove sys/cdefs.h include 2024-10-15 17:50:15 +03:00
sysv_sem.c sysv_ipc: remove sys/cdefs.h include 2024-10-15 17:50:15 +03:00
sysv_shm.c sysvshm: add shmobjinfo() function to find key/seq of the segment backed by obj 2024-10-15 17:50:16 +03:00
tty.c kern: Make fileops and filterops tables const where possible 2024-12-03 01:03:42 +00:00
tty_compat.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
tty_info.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
tty_inq.c kern: tty: fix ttyinq_read_uio assertion 2024-02-06 09:31:17 -06:00
tty_outq.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
tty_pts.c kern: Make fileops and filterops tables const where possible 2024-12-03 01:03:42 +00:00
tty_tty.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
tty_ttydisc.c kern: tty: recanonicalize the buffer on ICANON/VEOF/VEOL changes 2024-01-30 11:11:24 -06:00
uipc_accf.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
uipc_debug.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
uipc_domain.c socket: Handle the possibility of a protocol with no ctloutput 2025-04-15 02:25:24 +00:00
uipc_ktls.c ktls: Fix races that can lead to double initialization 2024-07-23 09:01:30 -04:00
uipc_mbuf.c mbuf: provide m_freemp() 2024-06-10 18:31:02 -07:00
uipc_mbuf2.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
uipc_mbufhash.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
uipc_mqueue.c kern: Make fileops and filterops tables const where possible 2024-12-03 01:03:42 +00:00
uipc_sem.c kern: Make fileops and filterops tables const where possible 2024-12-03 01:03:42 +00:00
uipc_shm.c posixshm: Fix range locking in shm_write() 2025-04-24 13:20:52 +00:00
uipc_sockbuf.c socket: Implement SO_SPLICE 2024-10-17 15:48:36 +00:00
uipc_socket.c so_splice: Synchronize so_unsplice() with so_splice() 2025-04-29 00:44:04 +00:00
uipc_syscalls.c socket: Pass capsicum rights down to socket option handlers 2024-07-23 09:01:29 -04:00
uipc_usrreq.c unix: Be consistent about error handling for unconnected sockets 2025-01-20 00:26:27 +00:00
vfs_acl.c kern___acl_aclcheck_path: vrele the vnode after namei() 2025-03-28 02:32:28 +02:00
vfs_aio.c kern: Make fileops and filterops tables const where possible 2024-12-03 01:03:42 +00:00
vfs_bio.c boottrace: Don't say we've unmounted if we haven't. 2025-02-13 01:37:34 +01:00
vfs_cache.c sysctl(9): Ease exporting struct sizes; Discourage doing that 2025-05-13 14:41:33 +02:00
vfs_cluster.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
vfs_default.c stat(2): add st_bsdflags field 2025-04-09 03:53:17 +03:00
vfs_export.c nfs: Fallback to GID_NOGROUP on no groups 2024-11-15 11:47:43 +01:00
vfs_extattr.c Move kern_extattr_* prototypes to <sys/syscallsubr.h> 2023-10-24 10:00:57 -07:00
vfs_hash.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
vfs_init.c vfs mount: Consistently use ENODEV internally for an invalid fstype 2024-01-03 12:18:44 -08:00
vfs_lookup.c vfs_lookup.c: only call ktrcapfail() if KTRACE is enabled 2024-05-15 16:21:35 +03:00
vfs_mount.c nmount(2), NFS: Accept 'ngroups_max + 1' groups in "export" credentials 2025-01-16 19:06:58 +01:00
vfs_mountroot.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
vfs_subr.c vfs: vn_alloc(): Stop always calling vn_alloc_hard() and direct reclaiming 2025-05-21 12:07:15 +02:00
vfs_syscalls.c copy_file_range: Fix overlap checking 2025-04-24 13:20:52 +00:00
vfs_vnops.c file: Add foffset_lock_pair() 2025-04-15 02:25:24 +00:00
vnode_if.src VFS: add VOP_GETLOWVNODE() 2023-12-05 02:43:27 +02:00