| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It is very conservative. Only spinning when LK_ADAPTIVE is passed, only on
exclusive lock and never when any waiters are present. buffer cache is remains
not spinning.
This reduces total sleep times during buildworld etc., but it does not shorten
total real time (culprits are contention in the vm subsystem along with slock +
upgrade which is not covered).
For microbenchmarks: open3_processes -t 52 (open/close of the same file for
writing) ops/s:
before: 258845
after: 801638
Reviewed by: kib
Tested by: pho
Differential Revision: https://reviews.freebsd.org/D25753
Notes:
svn path=/head/; revision=363415
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
During device attachment, all interrupt sources will bind to the BSP,
as it is the only processor online. This means interrupts must be
redistributed ("shuffled") later, during SI_SUB_SMP.
For the EARLY_AP_STARTUP case, this is no longer true. SI_SUB_SMP will
execute much earlier, meaning APs will be online and available before
devices begin attachment, and there will therefore be nothing to
shuffle.
All PIC-conforming interrupt controllers will handle this early
distribution properly, except for RISC-V's PLIC. Make the necessary
tweak to the PLIC driver.
While here, convert irq_assign_cpu from a boolean_t to a bool.
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D25693
Notes:
svn path=/head/; revision=363404
|
|
|
|
|
|
|
|
|
| |
This reduces excessive reads from the lock.
Tested by: pho
Notes:
svn path=/head/; revision=363394
|
|
|
|
|
|
|
| |
This matches rw and sx locks.
Notes:
svn path=/head/; revision=363393
|
|
|
|
| |
Notes:
svn path=/head/; revision=363392
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Split the MANAGE privilege into MANAGE, SETMAC and CREATE_VAP.
+ VAP_MANAGE is everything but setting the MAC and creating a VAP.
+ VAP_SETMAC is setting the MAC address of the VAP.
Typically you wouldn't want the jail to be able to modify this.
+ CREATE_VAP is to create a new VAP. Again, you don't want to be doing
this in a jail, but this DOES stop being able to run some corner
cases like Dynamic WDS (DWDS) AP in a jail/vnet. We can figure this
bit out later.
This allows me to run wpa_supplicant in a jail after transferring
a STA VAP into it. I unfortunately can't currently set the wlan
debugging inside the jail; that would be super useful!
Reviewed by: bz
Differential Revision: https://reviews.freebsd.org/D25630
Notes:
svn path=/head/; revision=363325
|
|
|
|
|
|
|
| |
Common occurence with cpuset and other places.
Notes:
svn path=/head/; revision=363297
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The code would unconditionally lock the vnode to audit or call the
mac hoook, even if neither want to do anything. Pre-check the state
to avoid locking in the common case of nothing to do.
Note this code should not be normally executed anyway as vnodes are
always return ready. However, poll1/2 from will-it-scale use regular
files for benchmarking, presumably to focus on the interface itself
as the vnode handler is not supposed to do almost anything.
This in particular fixes poll2 which passes 128 fds.
$ ./poll2_processes -s 10
before: 134411
after: 271572
Notes:
svn path=/head/; revision=363249
|
|
|
|
|
|
|
| |
Auditing would not be performed without MAC compiled in.
Notes:
svn path=/head/; revision=363247
|
|
|
|
| |
Notes:
svn path=/head/; revision=363215
|
|
|
|
|
|
|
|
|
|
|
| |
It keeps recalculated way more often than it is needed.
Provide a routine (fdlastfile) to get it if necessary.
Consumers may be better off with a bitmap iterator instead.
Notes:
svn path=/head/; revision=363214
|
|
|
|
| |
Notes:
svn path=/head/; revision=363213
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously it would check 4, 3, 2, 1 lists. In practice by the time
it is getting called all lists have some elements and consequently
this does not result in new evictions.
Nonetheless, the code is clearer.
Tested by: pho
Notes:
svn path=/head/; revision=363202
|
|
|
|
|
|
|
|
| |
The counter is not very useful and if necessary the value can be
found by summing up other counters.
Notes:
svn path=/head/; revision=363201
|
|
|
|
| |
Notes:
svn path=/head/; revision=363200
|
|
|
|
|
|
|
| |
Tested by: pho
Notes:
svn path=/head/; revision=363199
|
|
|
|
| |
Notes:
svn path=/head/; revision=363198
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
.. and stuff if into the unused target vnode field
This gets rid of concurrent nc_flag modifications racing with the
shrinker and consequently fixes a bug where such a change could have
been missed when cache_ncp_invalidate was being issued..
Reported by: zeising
Tested by: pho, zeising
Fixes: r362828 ("cache: lockless forward lookup with smr")
Notes:
svn path=/head/; revision=363196
|
|
|
|
|
|
|
|
|
|
|
| |
We don't expect to fail acquiring the reference unless running into a corner
case. Just in case ensure forward progress by taking the lock.
Reviewed by: kib, markj
Differential Revision: https://reviews.freebsd.org/D25616
Notes:
svn path=/head/; revision=363112
|
|
|
|
|
|
|
|
|
|
|
| |
The kernel would unlock already unlocked mutex if the buffer got filled up
before the mount list ended.
Reported by: pho
Fixes: r363069 ("vfs: depessimize getfsstat when only the count is requested")
Notes:
svn path=/head/; revision=363072
|
|
|
|
|
|
|
| |
.. even without the -w switch
Notes:
svn path=/head/; revision=363071
|
|
|
|
|
|
|
| |
This avoids relocking mountlist_mtx for each entry.
Notes:
svn path=/head/; revision=363069
|
|
|
|
|
|
|
| |
It is quite often called for the very same buffer.
Notes:
svn path=/head/; revision=363068
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Lack of SHM_GROW_ON_WRITE is actively breaking Python's memfd_create tests,
so go ahead and implement it. A future change will make memfd_create always
set SHM_GROW_ON_WRITE, to match Linux behavior and unbreak Python's tests
on -CURRENT.
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D25502
Notes:
svn path=/head/; revision=363065
|
|
|
|
|
|
|
|
|
|
| |
Reported by: Jeffball <jeffball@grimm-co.com>
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D25600
Notes:
svn path=/head/; revision=363055
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While this behaviour is harmless, it is really just an artifact of the
fact that the msgctl(2) implementation uses a user-visible structure as
part of the internal implementation, so it is not deliberate and these
pointers are not useful to userspace. Thus, NULL them out before
copying out, and remove references to them from the manual page.
Reported by: Jeffball <jeffball@grimm-co.com>
Reviewed by: emaste, kib
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D25600
Notes:
svn path=/head/; revision=363051
|
|
|
|
|
|
|
| |
Sponsored by: The FreeBSD Foundation
Notes:
svn path=/head/; revision=362971
|
|
|
|
|
|
|
|
|
|
|
| |
These system calls already perform validation of their parameters when
called in capability mode, identical to cpuset_(get|set)affinity().
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Notes:
svn path=/head/; revision=362970
|
|
|
|
| |
Notes:
svn path=/head/; revision=362969
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
cpuset_(get|set)(affinity|domain)(2) permit a get or set of the calling
thread or process' CPU and domain set in capability mode, but only when
the thread or process ID is specified as -1. Extend this to cover the
case where the ID actually matches the caller's TID or PID, since some
code, such as our pthread_attr_get_np() implementation, always provides
an explicit ID.
It was not and still is not permitted to access CPU and domain sets for
other threads in the same process when the process is in capability
mode. This might change in the future.
Submitted by: Greg V <greg@unrelenting.technology> (original version)
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D25552
Notes:
svn path=/head/; revision=362968
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a more compact display format for kern.tty_info_kstacks inspired by
procstat -kk. Set it as a default one.
# sysctl kern.tty_info_kstacks=1
kern.tty_info_kstacks: 0 -> 1
# sleep 2
^T
load: 0.17 cmd: sleep 623 [nanslp] 0.72r 0.00u 0.00s 0% 2124k
#0 0xffffffff80c4443e at mi_switch+0xbe
#1 0xffffffff80c98044 at sleepq_catch_signals+0x494
#2 0xffffffff80c982c2 at sleepq_timedwait_sig+0x12
#3 0xffffffff80c43af3 at _sleep+0x193
#4 0xffffffff80c50e31 at kern_clock_nanosleep+0x1a1
#5 0xffffffff80c5119b at sys_nanosleep+0x3b
#6 0xffffffff810ffc69 at amd64_syscall+0x119
#7 0xffffffff810d5520 at fast_syscall_common+0x101
sleep: about 1 second(s) left out of the original 2
^C
# sysctl kern.tty_info_kstacks=2
kern.tty_info_kstacks: 1 -> 2
# sleep 2
^T
load: 0.24 cmd: sleep 625 [nanslp] 0.81r 0.00u 0.00s 0% 2124k
mi_switch+0xbe sleepq_catch_signals+0x494 sleepq_timedwait_sig+0x12
sleep+0x193 kern_clock_nanosleep+0x1a1 sys_nanosleep+0x3b
amd64_syscall+0x119 fast_syscall_common+0x101
sleep: about 1 second(s) left out of the original 2
^C
Suggested by: avg
Reviewed by: mjg
Relnotes: yes
Sponsored by: Mysterious Code Ltd.
Differential Revision: https://reviews.freebsd.org/D25487
Notes:
svn path=/head/; revision=362967
|
|
|
|
|
|
|
|
|
|
|
|
| |
Otherwise the same checks are duplicated across four different system
call implementations, cpuset_(get|set)(affinity|domain)(). No
functional change intended.
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Notes:
svn path=/head/; revision=362966
|
|
|
|
| |
Notes:
svn path=/head/; revision=362951
|
|
|
|
|
|
|
| |
While here assert on ls_threads state.
Notes:
svn path=/head/; revision=362950
|
|
|
|
|
|
|
|
| |
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Notes:
svn path=/head/; revision=362948
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On architectures that use RELA relocations it is safe to rerun the ifunc
resolvers on after all CPUs have started, but while they are sill parked.
On arm64 with big.LITTLE this is needed as some SoCs have shipped with
different ID register values the big and little clusters meaning we were
unable to rely on the register values from the boot CPU.
Add support for rerunning the resolvers on arm64 and amd64 as these are
both RELA using architectures.
Reviewed by: kib
Sponsored by: Innovate UK
Differential Revision: https://reviews.freebsd.org/D25455
Notes:
svn path=/head/; revision=362944
|
|
|
|
| |
Notes:
svn path=/head/; revision=362921
|
|
|
|
|
|
|
|
|
| |
They trigger for some people, the bug is not obvious, there are no takers
for fixing it, the issue already had to be there for years beforehand and
is low priority.
Notes:
svn path=/head/; revision=362910
|
|
|
|
|
|
|
| |
This matches crhold and eliminates an assembly maze in the common case.
Notes:
svn path=/head/; revision=362890
|
|
|
|
|
|
|
|
| |
Note the dtrace probe can fire even the entry is gone, but I don't think that's
worth fixing.
Notes:
svn path=/head/; revision=362889
|
|
|
|
|
|
|
|
|
|
| |
The intent was to mark the entry as invalid before cache_zap starts messing
with it.
While here add some comments.
Notes:
svn path=/head/; revision=362888
|
|
|
|
|
|
|
|
|
|
| |
Reviewed by: jhb, hselasky
Sponsored by: Mellanox Technologies
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D25532
Notes:
svn path=/head/; revision=362885
|
|
|
|
|
|
|
|
|
|
|
| |
Rather than unlocking and returning we can just perform the needed action
only when the interrupt source is valid and reuse the unlock in both the
valid irq and invalid irq cases.
Sponsored by: Innovate UK
Notes:
svn path=/head/; revision=362834
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This eliminates the need to take bucket locks in the common case.
Concurrent lookup utilizng the same vnodes is still bottlenecked on referencing
and locking path components, this will be taken care of separately.
Reviewed by: kib
Tested by: pho
Differential Revision: https://reviews.freebsd.org/D23913
Notes:
svn path=/head/; revision=362828
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
Notes:
svn path=/head/; revision=362827
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
LIST_FOREACH_SAFE() is not safe in the presence
of other threads removing list entries when a
mutex is released.
This is not in the critical path, so just restart
the scan each time we drop the lock, rather than
using a marker.
Reviewed by: jhb, markj
Sponsored by: Netflix
Notes:
svn path=/head/; revision=362789
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In addition to reducing lines of code, this also ensures that the full
allocation is always zeroed avoiding possible bugs with incorrect
lengths passed to explicit_bzero().
Suggested by: cem
Reviewed by: cem, delphij
Approved by: csprng (cem)
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D25435
Notes:
svn path=/head/; revision=362624
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
All vm_object_page_remove() callers, except
linux_invalidate_mapping_pages() in the LinuxKPI, free swap space when
removing a range of pages from an object. The LinuxKPI case appears to
be an unintentional omission that could result in leaked swap blocks, so
unconditionally free swap space in vm_object_page_remove() to protect
against similar bugs in the future.
Reviewed by: alc, kib
Tested by: pho
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D25329
Notes:
svn path=/head/; revision=362613
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adding `kern.features.witness` helps expose whether or not the kernel has
`options WITNESS` enabled, so the `feature_present(3)` API can be used
to query whether or not witness(9) is built into the kernel.
This support is helpful with userspace applications (generally speaking,
tests), as it can be queried to determine whether or not tests related
to WITNESS should be run.
MFC after: 1 week
Reviewed by: cem, darrick.freebsd_gmail.com
Differential Revision: https://reviews.freebsd.org/D25302
Sponsored by: DellEMC Isilon
Notes:
svn path=/head/; revision=362591
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For software like PostgreSQL and SQLite that sometimes reads sequentially
while also writing sequentially some distance behind with interleaved
syscalls on the same fd, performance is better on UFS if we do
sequential access heuristics separately for reads and writes.
Patch originally by Andrew Gierth in 2008, updated and proposed by me with
his permission.
Reviewed by: mjg, kib, tmunro
Approved by: mjg (mentor)
Obtained from: Andrew Gierth <andrew@tao11.riddles.org.uk>
Differential Revision: https://reviews.freebsd.org/D25024
Notes:
svn path=/head/; revision=362460
|