freebsd-dev/sys/kern
Mateusz Guzik f8022be3e6 vfs: protect vnodes with smr
vget_prep_smr and vhold_smr can be used to ref a vnode while within vfs_smr
section, allowing consumers to get away without locking.

See vhold_smr and vdropl for comments explaining caveats.

Reviewed by:	kib
Testec by:	pho
Differential Revision:	https://reviews.freebsd.org/D23913
2020-07-01 05:56:29 +00:00
..
bus_if.m Remove trailing white space. 2020-02-26 16:22:28 +00:00
capabilities.conf Implement a close_range(2) syscall 2020-04-12 21:23:19 +00:00
clock_if.m
cpufreq_if.m
device_if.m
genassym.sh
genoffset.c Merge td_epochnest with td_no_sleeping. 2019-10-29 17:28:25 +00:00
genoffset.sh
imgact_aout.c Make ps_strings in struct image_params into a pointer. 2020-04-15 20:21:30 +00:00
imgact_binmisc.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Convert canary, execpathp, and pagesizes to pointers. 2020-04-16 21:53:17 +00:00
imgact_shell.c
init_main.c cred: distribute reference count per thread 2020-06-09 23:03:48 +00:00
init_sysent.c Update the files created from the new syscalls.master from r361599. 2020-05-28 21:23:02 +00:00
kern_acct.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_alq.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
kern_clock.c deadlkres: include thread name in panic messages 2020-04-01 04:51:39 +00:00
kern_clocksource.c
kern_condvar.c
kern_conf.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
kern_cons.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_context.c
kern_cpu.c Don't try to set frequendcy for enumerated but newer started CPUs. 2020-04-29 14:14:15 +00:00
kern_cpuset.c bitset: rename confusing macro NAND to ANDNOT 2019-12-13 09:32:16 +00:00
kern_ctf.c vfs: drop the mostly unused flags argument from VOP_UNLOCK 2020-01-03 22:29:58 +00:00
kern_descrip.c vfs: track sequential reads and writes separately 2020-06-21 08:51:24 +00:00
kern_dtrace.c
kern_dump.c [PPC64] Initial kernel minidump implementation 2019-10-14 13:04:04 +00:00
kern_environment.c Use zfree() instead of explicit_bzero() and free(). 2020-06-25 20:17:34 +00:00
kern_et.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_event.c kqueue: fix conversion of timer data to sbintime 2020-04-21 03:57:30 +00:00
kern_exec.c kern_exec.c: Produce valid code ifndef SYS_PROTO_H 2020-05-02 18:54:25 +00:00
kern_exit.c proc: refactor clearing credentials into proc_unset_cred 2020-05-25 12:41:44 +00:00
kern_fail.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_ffclock.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_fork.c cred: distribute reference count per thread 2020-06-09 23:03:48 +00:00
kern_hhook.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
kern_idle.c
kern_intr.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_jail.c vfs: add restrictions to read(2) of a directory [2/2] 2020-06-04 18:17:25 +00:00
kern_kcov.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_khelp.c
kern_kthread.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
kern_ktr.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_ktrace.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_linker.c Clarify which hints file is the source of an error message. 2020-06-01 03:37:58 +00:00
kern_lock.c When running with a kernel compiled with DEBUG_LOCKS, before 2020-04-09 23:42:13 +00:00
kern_lockf.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
kern_lockstat.c Add lockmgr(9) probes to the lockstat DTrace provider. 2019-08-21 23:43:58 +00:00
kern_loginclass.c
kern_malloc.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_mbuf.c Use zone nomenclature that is consistent with UMA. 2020-06-21 04:59:02 +00:00
kern_mib.c Improve comment for compat32 handling of sysctl hw.pagesizes. 2020-05-15 13:53:10 +00:00
kern_module.c
kern_mtxpool.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
kern_mutex.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_ntptime.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_osd.c
kern_physio.c Allocate pager bufs from UMA instead of 80-ish mutex protected linked list. 2019-01-15 01:02:16 +00:00
kern_pmc.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_poll.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_priv.c vfs: add restrictions to read(2) of a directory [2/2] 2020-06-04 18:17:25 +00:00
kern_proc.c Assert on pg_jobc state. 2020-06-09 15:17:23 +00:00
kern_procctl.c correct procctl(PROC_PROTMAX_STATUS _NOFORCE return 2020-05-01 14:30:59 +00:00
kern_prot.c cred: distribute reference count per thread 2020-06-09 23:03:48 +00:00
kern_racct.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_rangelock.c rangelock: add rangelock_cookie_assert 2019-09-15 02:59:53 +00:00
kern_rctl.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (1 of many) 2020-02-15 18:48:38 +00:00
kern_resource.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
kern_rmlock.c rms: use smp_rendezvous_cpus_retry instead of a hand-rolled variant 2020-02-12 11:17:18 +00:00
kern_rwlock.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_sdt.c
kern_sema.c
kern_sendfile.c Fix hang due to missing unbusy in sendfile when an async data I/O fails. 2020-06-06 00:02:50 +00:00
kern_sharedpage.c Fix the last few cases that grab without busy or valid. The grab functions must 2019-12-02 22:38:25 +00:00
kern_shutdown.c Use zfree() instead of explicit_bzero() and free(). 2020-06-25 20:17:34 +00:00
kern_sig.c corefile_open_last: don't keep a locked vnode while locking other ones 2020-05-29 07:44:02 +00:00
kern_switch.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_sx.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_synch.c Handle PCATCH in blockcount_sleep() so it can be interrupted. 2020-04-21 17:13:06 +00:00
kern_syscalls.c add a sanity check to the system call registration code 2019-12-11 15:52:29 +00:00
kern_sysctl.c style(9): end continued line with operator. 2020-04-16 17:24:13 +00:00
kern_tc.c Remove double-calls to tc_get_timecount() to warm timecounters. 2020-06-10 22:30:32 +00:00
kern_thr.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
kern_thread.c cred: distribute reference count per thread 2020-06-09 23:03:48 +00:00
kern_time.c Remove bogus use of useracc() in (clock_)nanosleep. 2020-04-14 20:53:12 +00:00
kern_timeout.c Remove misleading / redundant bzero in callout_callwheel_init 2020-03-16 22:25:25 +00:00
kern_tslog.c
kern_ubsan.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
kern_umtx.c sys/: Document few more sysctls. 2020-03-02 15:30:52 +00:00
kern_uuid.c validate_uuid: absorb the rest of parse_uuid with a flags arg 2020-04-15 18:39:12 +00:00
kern_xxx.c
ksched.c
link_elf_obj.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
link_elf.c [PowerPC] More relocation fixes 2020-06-21 03:39:26 +00:00
linker_if.m
Make.tags.inc Remove a couple of harmless stray references to nandfs. 2019-06-25 16:39:25 +00:00
Makefile sys/kern sysent: re-add dependency on capabilities.conf 2020-02-12 19:06:34 +00:00
makesyscalls.sh Restore the ability to set capenabled directly in syscalls.conf. 2019-09-30 20:58:29 +00:00
md4c.c
md5c.c
msi_if.m
p1003_1b.c
pic_if.m
posix4_mib.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
sched_4bsd.c sys/: Document few more sysctls. 2020-03-02 15:30:52 +00:00
sched_ule.c sys/: Document few more sysctls. 2020-03-02 15:30:52 +00:00
serdev_if.m
stack_protector.c Revert r346292 (permit_nonrandom_stackcookies) 2019-05-13 23:37:44 +00:00
subr_acl_nfs4.c Remove unused argument to priv_check_cred. 2018-12-11 19:32:16 +00:00
subr_acl_posix1e.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
subr_atomic64.c emulated atomic64: disable interrupts as the lock mechanism on !SMP 2020-01-03 18:29:20 +00:00
subr_autoconf.c
subr_blist.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
subr_boot.c When parsing command line stuff, treat tabs and spaces the same. 2019-04-18 22:52:12 +00:00
subr_bufring.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
subr_bus_dma.c Add support for optional separate output buffers to in-kernel crypto. 2020-05-25 22:12:04 +00:00
subr_bus.c hw.bus.info: rework handler 2020-06-18 21:42:54 +00:00
subr_busdma_bufalloc.c
subr_capability.c Remove unused SYSINIT macros for capability rights. 2020-03-26 15:02:37 +00:00
subr_clock.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
subr_compressor.c clamp kernel dump compression level when using gzip 2020-02-20 23:53:48 +00:00
subr_counter.c Add COUNTER_U64_SYSINIT() and COUNTER_U64_DEFINE_EARLY(). 2020-03-06 19:09:01 +00:00
subr_coverage.c kcov: remove no longer needed atomic_load_ptr casts 2020-02-14 23:18:03 +00:00
subr_csan.c copystr(9): Move to deprecate (attempt #2) 2020-05-25 16:40:48 +00:00
subr_devmap.c Print upper 32 bits in devmap table entries 2019-12-20 03:40:53 +00:00
subr_devstat.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
subr_disk.c Fix botched merge with 355066 2019-03-12 05:10:41 +00:00
subr_dummy_vdso_tc.c
subr_early.c
subr_epoch.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
subr_eventhandler.c Include ktr.h in more compilation units 2019-05-21 20:38:48 +00:00
subr_fattime.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
subr_filter.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
subr_firmware.c Fix a panic when unloading firmware 2020-06-29 21:35:50 +00:00
subr_gtaskqueue.c Remove the "config" taskqgroup and its KPIs. 2020-03-30 14:24:03 +00:00
subr_hash.c
subr_hints.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
subr_intr.c Fix arm64 kernel build with DEBUG on 2020-06-10 16:00:43 +00:00
subr_kdb.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
subr_kobj.c sys/: Document few more sysctls. 2020-03-02 15:30:52 +00:00
subr_lock.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
subr_log.c
subr_mchain.c
subr_module.c
subr_msgbuf.c
subr_param.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
subr_pcpu.c Add COUNTER_U64_SYSINIT() and COUNTER_U64_DEFINE_EARLY(). 2020-03-06 19:09:01 +00:00
subr_pctrie.c kern/subr_pctrie: Fix mismatched signedness in assertion comparison 2019-04-06 21:56:24 +00:00
subr_physmem.c Convert arm's physmem interface to MI code 2020-04-19 00:12:30 +00:00
subr_pidctrl.c
subr_power.c Extract eventfilter declarations to sys/_eventfilter.h 2019-05-20 00:38:23 +00:00
subr_prf.c remove %n support from printf(9) 2020-05-09 15:56:02 +00:00
subr_prof.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
subr_rangeset.c Implement rangesets. 2019-02-20 09:38:19 +00:00
subr_rman.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
subr_rtc.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
subr_sbuf.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
subr_scanf.c Add support for 'j', 't' and 'z' flags to kernel sscanf(). 2019-08-16 19:46:22 +00:00
subr_sfbuf.c
subr_sglist.c Step 4.2: start divorce of M_EXT and M_EXTPG 2020-05-03 00:37:16 +00:00
subr_sleepqueue.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
subr_smp.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
subr_smr.c Use COUNTER_U64_DEFINE_EARLY() in places where it simplifies things. 2020-03-06 19:10:00 +00:00
subr_stack.c Add debugging facility EPOCH_TRACE that checks that epochs entered are 2019-09-25 18:26:31 +00:00
subr_stats.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
subr_syscall.c Retire procfs-based process debugging. 2020-04-01 19:22:09 +00:00
subr_taskqueue.c Add flag to struct task to mark the task as requiring network epoch. 2020-02-11 18:48:07 +00:00
subr_terminal.c vt(4): reset scrollback and cursor position after clearing history buffer 2020-06-02 01:21:48 +00:00
subr_trap.c Retire procfs-based process debugging. 2020-04-01 19:22:09 +00:00
subr_turnstile.c ddb(4): show lockchain: Don't dereference LK_KERNPROC 2020-04-02 20:47:51 +00:00
subr_uio.c Remove copyinfrom() and copyinstrfrom(). 2020-05-20 20:58:17 +00:00
subr_unit.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
subr_vmem.c Eliminate some unnecessary uses of UMA_ZONE_VM. Only zones involved in 2020-02-19 08:17:27 +00:00
subr_witness.c Add kern.features.witness 2020-06-24 18:51:01 +00:00
sys_capability.c Enter a write sequence when updating rights. 2020-03-19 15:39:45 +00:00
sys_generic.c Cast all ioctl command arguments through uint32_t internally. 2020-04-15 13:20:51 +00:00
sys_getrandom.c Fix a typo in r356667 comment 2020-01-12 23:52:16 +00:00
sys_pipe.c Fix handling of EV_EOF for named pipes. 2020-04-27 15:59:19 +00:00
sys_procdesc.c procdesc: allow to collect status through wait(1) if process is traced 2019-11-25 18:33:21 +00:00
sys_process.c Refactor ptrace() ABI compatibility. 2020-06-09 16:43:23 +00:00
sys_socket.c Lock the socket in soo_stat(). 2020-03-20 20:09:00 +00:00
syscalls.c Update the files created from the new syscalls.master from r361599. 2020-05-28 21:23:02 +00:00
syscalls.master Add a syscall for the nfs-over-tls daemons to use. 2020-05-28 21:06:10 +00:00
systrace_args.c Update the files created from the new syscalls.master from r361599. 2020-05-28 21:23:02 +00:00
sysv_ipc.c sysv: get rid of fork/exit hooks if the code is compiled in 2019-05-04 19:05:30 +00:00
sysv_msg.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
sysv_sem.c Centralize compatability translation macros. 2020-04-14 20:30:48 +00:00
sysv_shm.c Centralize compatability translation macros. 2020-04-14 20:30:48 +00:00
tty_compat.c
tty_info.c Flip kern.tty_info_kstacks on by default 2020-06-13 03:04:40 +00:00
tty_inq.c
tty_outq.c
tty_pts.c tty_pts: don't rely on tty header pollution for sys/mutex.h 2019-11-29 03:56:01 +00:00
tty_tty.c Extract eventfilter declarations to sys/_eventfilter.h 2019-05-20 00:38:23 +00:00
tty_ttydisc.c tty: convert tty_lock_assert to tty_assert_locked to hide lock type 2020-04-17 18:34:49 +00:00
tty.c Assign process group of the TTY under the "proctree_lock". 2020-05-15 12:47:39 +00:00
uipc_accf.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
uipc_debug.c
uipc_domain.c - Move global network epoch definition to epoch.h, as more different 2020-01-15 03:34:21 +00:00
uipc_ktls.c Use zfree() instead of explicit_bzero() and free(). 2020-06-25 20:17:34 +00:00
uipc_mbuf2.c m_pulldown(): Change an if () panic() into a KASSERT(). 2019-11-06 22:40:19 +00:00
uipc_mbuf.c [PowerPC] Fix powerpcspe build failure after r360569 2020-05-07 17:58:07 +00:00
uipc_mbufhash.c
uipc_mqueue.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
uipc_sem.c Remove unused argument to priv_check_cred. 2018-12-11 19:32:16 +00:00
uipc_shm.c Call swap_pager_freespace() from vm_object_page_remove(). 2020-06-25 15:21:21 +00:00
uipc_sockbuf.c Step 4.2: start divorce of M_EXT and M_EXTPG 2020-05-03 00:37:16 +00:00
uipc_socket.c Add the SCTP_SUPPORT kernel option. 2020-06-18 19:32:34 +00:00
uipc_syscalls.c Only enable COMPAT_43 changes for syscalls ABI for a.out processes. 2019-08-11 19:16:07 +00:00
uipc_usrreq.c Fix sendto() on unconnected SOCK_STREAM/SEQPACKET unix sockets. 2020-04-13 19:22:05 +00:00
vfs_acl.c vfs: use new capsicum helpers 2020-02-15 01:28:42 +00:00
vfs_aio.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
vfs_bio.c This commit enables a UFS filesystem to do a forcible unmount when 2020-05-25 23:47:31 +00:00
vfs_cache.c Use COUNTER_U64_DEFINE_EARLY() in places where it simplifies things. 2020-03-06 19:10:00 +00:00
vfs_cluster.c Remove duplicated empty lines from kern/*.c 2020-01-30 20:05:05 +00:00
vfs_default.c VOP_GETPAGES_ASYNC(): consistently call iodone() callback in case of error. 2020-03-30 21:44:30 +00:00
vfs_export.c Apply default security flavor in vfs_export 2020-06-16 21:30:30 +00:00
vfs_extattr.c vfs_extattr: Allow extattr names up to the full max 2020-05-14 03:01:23 +00:00
vfs_hash.c vfs: incomplete pass at converting more ints to u_long 2020-01-11 22:56:20 +00:00
vfs_init.c Fix export_args ex_flags field so that is 64bits, the same as mnt_flags. 2020-06-14 00:10:18 +00:00
vfs_lookup.c vfs: stop taking additional refs on root vnode during lookup 2020-03-01 21:54:28 +00:00
vfs_mount.c Apply default security flavor in vfs_export 2020-06-16 21:30:30 +00:00
vfs_mountroot.c pwd: unbreak repeated calls to set_rootvnode 2020-04-27 13:54:00 +00:00
vfs_subr.c vfs: protect vnodes with smr 2020-07-01 05:56:29 +00:00
vfs_syscalls.c vfs: track sequential reads and writes separately 2020-06-21 08:51:24 +00:00
vfs_vnops.c vfs: track sequential reads and writes separately 2020-06-21 08:51:24 +00:00
vnode_if.src vfs: quiet -Wwrite-strings 2020-02-23 03:32:11 +00:00