opnsense-src/sys/kern
Alexander Motin 781c93d405 Implement simple direct-mapped cache for popular filesystem identifiers to
avoid congestion on global mountlist_mtx mutex in vfs_busyfs(), while
traversing through the list of mount points.

This change significantly improves NFS server scalability, since it had
to do this translation for every request, and the global lock becomes quite
congested.

This code is more optimized for relatively small number of mount points.
On systems with hundreds of active mount points this simple cache may have
many collisions.  But the original traversal code in that case should also
behave much worse, so we are not loosing much.

Reviewed by:	attilio
MFC after:	2 weeks
Sponsored by:	iXsystems, Inc.
2014-06-12 12:43:48 +00:00
..
bus_if.m Add a BUS_CHILD_DELETED() method that a bus can hook to allow it to cleanup 2012-08-21 18:13:09 +00:00
capabilities.conf Allow sigwait(2) in capabilities mode. 2014-01-28 01:49:49 +00:00
clock_if.m
cpufreq_if.m
device_if.m Revert r239178 and implement two new functions, namely 2012-08-15 15:42:57 +00:00
genassym.sh
imgact_aout.c Cosmetics: define FREEBSD32_MINUSER and AOUT32_MINUSER for struct 2012-07-22 13:41:45 +00:00
imgact_binmisc.c sys/kern/imgact_binmisc.c -- free the right pointer mask vs magic 2014-04-08 22:12:01 +00:00
imgact_elf.c To allow to run the interpreter itself add a new ELF branding type. 2014-05-31 15:01:51 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_gzip.c Add a mmap flag (MAP_32BIT) on 64-bit platforms to request that a mapping use 2013-09-09 18:11:59 +00:00
imgact_shell.c The execution of the shebang script requires putting interpreter path, 2011-03-06 22:59:30 +00:00
inflate.c
init_main.c Rename global cnt to vm_cnt to avoid shadowing. 2014-03-22 10:26:09 +00:00
init_sysent.c Regen per r263318. 2014-03-18 21:34:11 +00:00
kern_acct.c acct: create a special plimit object and set it for exiting processes 2013-06-30 19:08:06 +00:00
kern_alq.c Prevent alq from panic when the invalid alq_file path specified. 2014-04-05 16:54:47 +00:00
kern_clock.c dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE 2013-11-26 08:46:27 +00:00
kern_clocksource.c Hide internal details of sbintime_t implementation wrapping INT64_MAX into 2014-04-12 23:29:29 +00:00
kern_condvar.c Fix lc_lock/lc_unlock() support for rmlocks held in shared mode. With 2013-09-20 23:06:21 +00:00
kern_conf.c Remove global device lock acquisition from dev_relthread(), replacing it 2013-10-22 10:40:26 +00:00
kern_cons.c Rework the EARLY_PRINTF mechanism. Instead of defining a special eprintf() 2014-02-12 00:53:38 +00:00
kern_context.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
kern_cpu.c In cf_get_method, when we don't already know what clock speed the CPU is 2014-05-11 10:32:58 +00:00
kern_cpuset.c Several improvements to rmlock(9). Many of these are based on patches 2013-06-25 18:44:15 +00:00
kern_ctf.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
kern_descrip.c Request a non-exiting process in sysctl_kern_proc_{o,}filedesc 2014-05-02 21:55:09 +00:00
kern_dtrace.c Commit the rest of the changes that were intended to be part of r266826. 2014-05-29 01:42:22 +00:00
kern_environment.c Make getenv_*() functions and respectively TUNABLE_*_FETCH() macros not 2013-11-01 10:32:33 +00:00
kern_et.c Fix build breakage. Apparently all ARM configs build kern_et.c, but only a 2014-04-02 17:34:17 +00:00
kern_event.c Hide internal details of sbintime_t implementation wrapping INT64_MAX into 2014-04-12 23:29:29 +00:00
kern_exec.c Refresh a comment. The VM_STACK option was eliminated in r43209. 2014-06-09 00:15:16 +00:00
kern_exit.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
kern_fail.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
kern_ffclock.c Revise the sysctl handling code and restructure the hierarchy of sysctls 2011-12-01 07:19:13 +00:00
kern_fork.c The fasttrap fork handler is responsible for removing tracepoints in the 2013-12-18 01:41:52 +00:00
kern_gzio.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
kern_hhook.c Move hhook's per-vnet initialisation to an earlier SYSINIT SI_SUB stage to 2013-06-15 10:08:34 +00:00
kern_idle.c On multi-core, multi-threaded PPC systems, it is important that the threads 2011-05-31 15:11:43 +00:00
kern_intr.c Snapshot. This passes the build test, but has not yet been finished or debugged. 2013-10-04 06:55:06 +00:00
kern_jail.c Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
kern_khelp.c Cleanup and simplification in khelp_{register|deregister}_helper(). No 2013-06-15 06:45:17 +00:00
kern_kthread.c Do not use potentially stale thread in kthread_add() 2013-08-17 17:02:43 +00:00
kern_ktr.c Don't lose track of the KTR entries copied from 'ktr_buf_init[]' to the 2014-03-22 22:35:57 +00:00
kern_ktrace.c ktrace: Use designated initializers for the data_lengths array. 2014-06-06 14:49:00 +00:00
kern_linker.c Use realloc(9) instead of doing the reallocation inline. 2014-04-05 20:44:52 +00:00
kern_lock.c - For kernel compiled only with KDTRACE_HOOKS and not any lock debugging 2013-11-25 07:38:45 +00:00
kern_lockf.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
kern_lockstat.c - For kernel compiled only with KDTRACE_HOOKS and not any lock debugging 2013-11-25 07:38:45 +00:00
kern_loginclass.c Initialize loginclass mutex using MTX_SYSINIT instead of using SI_SUB_CPU. 2014-05-14 09:03:02 +00:00
kern_malloc.c Rename global cnt to vm_cnt to avoid shadowing. 2014-03-22 10:26:09 +00:00
kern_mbuf.c Initialise m_pkthdr via bzero instead of explicitly zeroing each member 2014-04-04 21:09:06 +00:00
kern_mib.c Rename global cnt to vm_cnt to avoid shadowing. 2014-03-22 10:26:09 +00:00
kern_module.c Fix a typo. 2012-08-22 20:01:57 +00:00
kern_mtxpool.c Garbage collect mtxpool_lockbuilder, the mutex pool historically used 2014-05-02 07:57:40 +00:00
kern_mutex.c - For kernel compiled only with KDTRACE_HOOKS and not any lock debugging 2013-11-25 07:38:45 +00:00
kern_ntptime.c rename scheduler->swapper and SI_SUB_RUN_SCHEDULER->SI_SUB_LAST 2013-07-24 09:45:31 +00:00
kern_osd.c
kern_physio.c Fix some issues in change 254760 pointed out by Bruce Evans: 2013-08-29 16:41:40 +00:00
kern_pmc.c Add software PMC support. 2012-03-28 20:58:30 +00:00
kern_poll.c Introduce a procedural interface to the ifnet structure. The new 2014-06-02 17:54:39 +00:00
kern_priv.c dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE 2013-11-26 08:46:27 +00:00
kern_proc.c Expose OBJT_MGTDEVICE VM objects used for GEM/TTM with drm2 as an 2014-02-11 21:57:37 +00:00
kern_prot.c Style fix 2012-11-14 10:33:12 +00:00
kern_racct.c dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE 2013-11-26 08:46:27 +00:00
kern_rangelock.c Change the queue of locks in kern_rangelock.c from holding lock requests in 2013-08-15 20:19:17 +00:00
kern_rctl.c Add CPU percentage limit enforcement to RCTL. The resouce name is "pcpu". 2012-10-26 16:01:08 +00:00
kern_resource.c rlimit: avoid unnecessary copying of rlimits 2013-12-13 20:54:45 +00:00
kern_rmlock.c - For kernel compiled only with KDTRACE_HOOKS and not any lock debugging 2013-11-25 07:38:45 +00:00
kern_rwlock.c Drop the 3rd clause from all 3 clause BSD licenses where I am the sole 2014-02-05 18:13:27 +00:00
kern_sdt.c Print a backtrace if the SDT(9) stub gets called so that there's at least 2014-02-22 01:41:45 +00:00
kern_sema.c
kern_sharedpage.c Remove the deprecated VM_ALLOC_RETRY flag for the vm_page_grab(9). 2013-08-22 07:39:53 +00:00
kern_shutdown.c Thinko: don't forget to apply 'howto' in case init(8) isn't running. 2014-04-07 21:18:12 +00:00
kern_sig.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
kern_switch.c Add a comment on why inlining critical_enter() may not be a good idea 2012-12-09 04:54:22 +00:00
kern_sx.c - For kernel compiled only with KDTRACE_HOOKS and not any lock debugging 2013-11-25 07:38:45 +00:00
kern_synch.c use saner calculations in should_yield 2013-11-26 14:00:50 +00:00
kern_syscalls.c
kern_sysctl.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
kern_tc.c - Make callout(9) tickless, relying on eventtimers(4) as backend for 2013-03-04 11:09:56 +00:00
kern_thr.c Stop treating td_sigmask specially for the purposes of new thread 2012-05-26 20:03:47 +00:00
kern_thread.c dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE 2013-11-26 08:46:27 +00:00
kern_time.c Fix VIRTUAL and PROF interval timers for short intervals, broken at r247903. 2014-04-16 18:37:46 +00:00
kern_timeout.c Convert functions to the new-style format. 2014-06-05 03:46:46 +00:00
kern_umtx.c Fix comments. 2014-03-19 12:45:40 +00:00
kern_uuid.c Fix a bug in be_uuid_dec(); it called le16dec() instead of be16dec(), 2014-02-13 22:24:36 +00:00
kern_xxx.c
ksched.c sched_rr_interval() seems always returned period in hz ticks, but same 2012-08-10 18:19:57 +00:00
link_elf.c Add a mmap flag (MAP_32BIT) on 64-bit platforms to request that a mapping use 2013-09-09 18:11:59 +00:00
link_elf_obj.c Add a mmap flag (MAP_32BIT) on 64-bit platforms to request that a mapping use 2013-09-09 18:11:59 +00:00
linker_if.m
Make.tags.inc Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
Makefile Continue to introduce Capsicum Capability Mode support: 2011-03-01 13:28:27 +00:00
makesyscalls.sh Fix syscalls that can be loaded as kernel modules - they were not given 2013-12-15 23:19:42 +00:00
md4c.c
md5c.c
p1003_1b.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
posix4_mib.c Define two new sysctl node flags: CTLFLAG_CAPRD and CTLFLAG_CAPRW, which 2011-07-17 23:05:24 +00:00
sched_4bsd.c Given that as of r258002 the last external user is gone, make sched_lock 2014-04-29 20:51:57 +00:00
sched_ule.c Remove write-only local variable. 2014-06-08 10:56:25 +00:00
serdev_if.m
stack_protector.c
subr_acl_nfs4.c Fix bug where NFSv4 ACL enforcement code wouldn't unconditionally 2012-04-17 14:54:00 +00:00
subr_acl_posix1e.c Add module load/unload stubs. 2012-03-13 20:27:48 +00:00
subr_autoconf.c Retire PCONFIG and leave the priority of thread0 alone when waiting for 2011-01-06 22:09:37 +00:00
subr_blist.c Remove reference to the rlist code from comments, and fix a typo visible 2013-02-05 20:08:33 +00:00
subr_bufring.c
subr_bus.c Revert r263754, re-adding support for hw.bus.devctl_disable. Breaking 2014-04-28 20:38:08 +00:00
subr_bus_dma.c Add bus_dmamap_load_ma() function to load map with the array of 2013-10-27 21:39:16 +00:00
subr_busdma_bufalloc.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
subr_capability.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
subr_clock.c Fix a 2038 bug. 2014-05-01 22:28:14 +00:00
subr_counter.c Create two public UMA_ZONE_PCPU zones: 64 bit sized and pointer sized. 2014-02-10 19:59:46 +00:00
subr_devstat.c change defaule permissions on /dev/devstat. while i'm here remove 2014-03-24 18:13:41 +00:00
subr_disk.c
subr_dummy_vdso_tc.c Implement mechanism to export some kernel timekeeping data to 2012-06-22 07:06:40 +00:00
subr_eventhandler.c
subr_fattime.c Fix a comment typo; conversion tables are for leap years, not leap seconds. 2014-04-20 13:37:22 +00:00
subr_firmware.c Correct sizeof usage 2012-06-25 05:41:16 +00:00
subr_hash.c Convert panic()s to KASSERT()s. This is an optimisation for 2012-01-23 16:31:46 +00:00
subr_hints.c Preserve one character space for a trailing '\0'. 2014-02-14 20:54:03 +00:00
subr_kdb.c When reentering kdb, typically due to a bug causing trap or assert in 2013-10-27 16:20:52 +00:00
subr_kobj.c As it turns out, r186347 actually is insufficient to avoid the use of the 2011-11-15 20:11:03 +00:00
subr_lock.c Drop the 3rd clause from all 3 clause BSD licenses where I am the sole 2014-02-05 18:13:27 +00:00
subr_log.c MFcalloutng (r244255 by mav, with minor changes): 2013-03-04 16:07:55 +00:00
subr_mbpool.c Give (*ext_free) an int return value allowing for very sophisticated 2013-08-25 10:57:09 +00:00
subr_mchain.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
subr_module.c Provide convenience function for obtaining MODINFO_ADDR and MODINFO_SIZE 2011-02-09 19:08:21 +00:00
subr_msgbuf.c - Clean up timestamps in msgbuf code. The timestamps should now be 2012-03-19 00:36:32 +00:00
subr_param.c Add VM_LAST, a special last element in enum VM_GUEST and use it in CTASSERT 2013-11-12 20:13:10 +00:00
subr_pcpu.c Create two public UMA_ZONE_PCPU zones: 64 bit sized and pointer sized. 2014-02-10 19:59:46 +00:00
subr_pctrie.c - Add a new general purpose path-compressed radix trie which can be used 2013-05-12 04:05:01 +00:00
subr_power.c
subr_prf.c Fix grammar error and trailing newline. 2014-04-23 02:21:17 +00:00
subr_prof.c Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
subr_rman.c Initialize r_flags the same way in all cases using a sanitized copy of 2014-05-28 16:57:17 +00:00
subr_rtc.c Core structure and functions to support a feed-forward clock within the kernel. 2011-11-19 14:10:16 +00:00
subr_sbuf.c Always request zeroed memory, in case we're dumb enough to leak it later. 2013-09-22 23:47:56 +00:00
subr_scanf.c Xen netback driver rewrite. 2012-01-26 16:35:09 +00:00
subr_sglist.c Add sglist_append_bio(9) to append a struct bio's data to a sglist 2014-01-13 04:41:08 +00:00
subr_sleepqueue.c Drop the 3rd clause from all 3 clause BSD licenses where I am the sole 2014-02-05 18:13:27 +00:00
subr_smp.c Retire smp_active. It was racey and caused demonstrated problems with 2014-04-26 20:27:54 +00:00
subr_stack.c Constify stack argument for functions that don't modify it. 2011-11-16 19:06:55 +00:00
subr_syscall.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
subr_taskqueue.c Pin the right thread. 2014-06-01 04:11:05 +00:00
subr_terminal.c Do not fill screen, while muted. 2014-04-07 22:37:13 +00:00
subr_trap.c Fix two issues with /dev/mem access on amd64, both causing kernel page 2014-03-21 14:25:09 +00:00
subr_turnstile.c dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE 2013-11-26 08:46:27 +00:00
subr_uio.c Remove zero-copy sockets code. It only worked for anonymous memory, 2013-09-16 06:25:54 +00:00
subr_unit.c Move the definition of the struct unrhdr into a separate header file, 2013-08-30 07:37:45 +00:00
subr_vmem.c Do not set M_BESTFIT if a strategy has already been provided. This 2014-04-16 21:39:43 +00:00
subr_witness.c Bump WITNESS_PENDLIST by MAXCPU to account for the 2014-04-29 17:22:29 +00:00
sys_capability.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
sys_generic.c Hide internal details of sbintime_t implementation wrapping INT64_MAX into 2014-04-12 23:29:29 +00:00
sys_pipe.c Ignore the error from pipespace_new when creating a pipe. 2014-05-02 00:52:13 +00:00
sys_procdesc.c Implement kqueue(2) for procdesc(4). 2014-04-07 18:10:49 +00:00
sys_process.c Extend the support for exempting processes from being killed when swap is 2013-09-19 18:53:42 +00:00
sys_socket.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
syscalls.c Regen per r263318. 2014-03-18 21:34:11 +00:00
syscalls.master Remove dead code from umtx support: 2014-03-18 21:32:03 +00:00
systrace_args.c Regen per r263318. 2014-03-18 21:34:11 +00:00
sysv_ipc.c
sysv_msg.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
sysv_sem.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
sysv_shm.c Eliminate the gratuitous use of mmap(2) flags from the implementation 2013-11-12 17:46:11 +00:00
tty.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
tty_compat.c
tty_info.c Fix whitespace inconsistencies in TTY code. 2012-02-06 18:15:46 +00:00
tty_inq.c Use strchr() and strrchr(). 2012-01-02 12:12:10 +00:00
tty_outq.c Fix whitespace inconsistencies in the TTY layer and its drivers owned by me. 2011-06-26 18:26:20 +00:00
tty_pts.c Make sendfile() a method in the struct fileops. Currently only 2013-08-15 07:54:31 +00:00
tty_tty.c Finish r210923, 210926. Mark some devices as eternal. 2011-01-04 10:59:38 +00:00
tty_ttydisc.c Correct SIGTTIN handling. 2012-10-25 09:05:21 +00:00
uipc_accf.c
uipc_debug.c Fix socket buffer timeouts precision using the new sbintime_t KPI instead 2013-09-01 23:34:53 +00:00
uipc_domain.c - Implement two new system calls: 2013-03-02 21:11:30 +00:00
uipc_mbuf.c Whitespace only. 2014-05-30 08:22:58 +00:00
uipc_mbuf2.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
uipc_mqueue.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
uipc_sem.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
uipc_shm.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
uipc_sockbuf.c Fix PR kern/185813 "SOCK_SEQPACKET AF_UNIX sockets with asymmetrical 2014-03-06 20:24:15 +00:00
uipc_socket.c Simplify wait/nowait code, eventually killing last remnant of 2014-01-16 13:45:41 +00:00
uipc_syscalls.c accept(),accept4(): Don't set *addrlen = 0 on [ECONNABORTED]. 2014-05-11 21:21:14 +00:00
uipc_usrreq.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
vfs_acl.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
vfs_aio.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
vfs_bio.c Devolatile as needed. 2014-06-09 09:10:31 +00:00
vfs_cache.c Fix accounting for the negative cache entries when reusing v_cache_dd. 2013-12-27 17:09:59 +00:00
vfs_cluster.c When allocating a pbuf for the cluster write, do not sleep waiting 2013-08-27 01:31:12 +00:00
vfs_default.c - Convert the bufobj lock to rwlock. 2013-05-31 00:43:41 +00:00
vfs_export.c Further refine the handling of stop signals in the NFS client. The 2013-02-21 19:02:50 +00:00
vfs_extattr.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
vfs_hash.c Add exported vfs_hash_index() function, which calculates the canonical 2013-01-14 05:41:40 +00:00
vfs_init.c Revert accidental commit. 2013-06-29 05:05:57 +00:00
vfs_lookup.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
vfs_mount.c Use proper MFSNAMELEN for fs type. 2014-04-12 21:39:17 +00:00
vfs_mountroot.c Move root_mount_hold() functionality to separate mutex. 2014-06-11 08:14:08 +00:00
vfs_subr.c Implement simple direct-mapped cache for popular filesystem identifiers to 2014-06-12 12:43:48 +00:00
vfs_syscalls.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
vfs_vnops.c change td_retval into a union w/ off_t, with defines to mask the 2014-03-16 00:53:40 +00:00
vnode_if.src If filesystem declares that it supports shared locking for writes, use 2013-11-09 20:36:29 +00:00