Author: Mateusz Guzik <mjg@FreeBSD.org>
Date: Thu Sep 14 16:13:01 2023 +0000
vfs: don't provoke recycling non-free vnodes without a good reason
If the total number of free vnodes is at or above target, there is no
point creating more of them.
This commit was done as a performance optimization but ends up
causing slowdowns when doing operations on many files.
Requested by: re (cperciva)
MFC after: 1 minute
regardless whether they come from the system thread or initiated from a
normal thread helping the system. If we block waiting for other writes,
that writes might not finish because our journal updates block that.
Set TDP_NORUNNINGBUF around softdep_process_journal().
Note: Another solution might be to use bwrite() instead of bawrite() if the
current thread is subject to the runningbufspace limit. The exempt
approach is used to be same as the bufdaemon.
PR: 282449
Noted and reviewed by: markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
The statement about 'do not deadlock there' is false, since this write
might need other writes to finish, which cannot be started due to
runningbufspace.
PR: 282449
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Use bool for vp_md. Compactify the calculation.
Explicitly check for non-zero when testing flags.
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Summary:
The kernel is now fully migrated to the IfAPI, so remove the temporary
inclusion of the private structure definition.
Reviewed By: #network, melifaro
Differential Revision: https://reviews.freebsd.org/D39621
sys/netinet and sys/netipsec are both part of the 'blessed' netstack, so
can access struct ifnet directly. With this structure becoming private
very soon, the necessary files need to get direct access.
Sponsored by: Juniper Networks, Inc.
Summary:
Remove the final direct access of struct ifnet members from netlink.
Since only the first address is used, create the iterator and then free,
without fully iterating.
Reviewed By: kp
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D42972
struct ifnet is expected to be private for everything outside of the
network stack (sys/net*, except netlink. Since dummymbuf is part of the
network stack, explicitly include the header to get access to the
private members.
Sponsored by: Juniper Networks, Inc.
Correct leading whitespace for a few lines.
Consistently use more canonical #ifdef to test for COMPAT_FREEBSD32.
Obtained from: CheriBSD
Sponsored by: AFRL, DARPA
FreeBSD sendfile() may perform a partial transfer and return EAGAIN if
the socket is non-blocking. Linux sendfile() expects no error in this
case, so squash EAGAIN.
PR: 282495
Tested by: pieter@krikkit.xyz
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D47447
Readahead/behind pages are handled by the swap pager, but the get_pages
caller is responsible for putting fetched pages into queues (or wiring
them beforehand).
Note that the VM object lock prevents the newly queued page from being
immediately reclaimed in the window before it is marked dirty by
swap_pager_swapoff_object().
Reported by: pho
Tested by: pho
Reviewed by: dougm, alc, kib
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D47526
Notable upstream pull request merges:
#16244acb6e71ed Added output to `zpool online` and `offline`
#1668494a03dd1e Pack dmu_buf_impl_t by 16 bytes
#166906187b1943 On the first vdev open ignore impossible ashift hints
#16692673efbbf5 zdb: add extra -T flag to show histograms of BRT refcounts
#166932bf152021 Fix gcc uninitialized warning in FreeBSD zio_crypt.c
#16694b16e09619 Reduce dirty records memory usage
#167015945676bc ZFS send should use spill block prefetched from
send_reader_thread
#167341c9a4c8cb Fix user properties output for zpool list
Obtained from: OpenZFS
OpenZFS commit: 1c9a4c8cb4
compat: test case add was previously removed but not the test itself
pass: test was added twice
Reviewed by: kp
Differential Revision: https://reviews.freebsd.org/D47535
If we fail to attach the new state keys in pf_state_key_attach() we are
expected to free both keys. Do so.
Note that in some scenarios both key are the same, so check for that
before freeing.
MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D47495
Bump the vnode use count, not its hold count. This fixes a panic triggered
by fstatat(..., AT_EMPTY_PATH) on DRM device nodes, which happens to be
what glxinfo(1) from Ubuntu Jammy is doing.
PR: kern/274538
Reviewed By: kib (earlier version), olce
Differential Revision: https://reviews.freebsd.org/D47391
We removed IP fast forwarding a while ago, so this is no longer relevant.
The netlink interface always sets the nexthop interface as V_loif, so users
don't need to worry about it either.
Reported by: Jim Thompson
Reviewed by: melifaro
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D47528
If WITH_OCIIMAGES is set, "make ftp-stage" will now publish those bits
into a directory under /OCI-IMAGES/, similar to how we publish CI and
VM images.
MFC after: 1 minute
1000Base-BX uses two wavelengths, commonly 1310nm, 1490nm, 1550nm, or
1590nm, in a Coarse Wavelength Division Multiplexing (CWDM) arrangement
so that a single fiber strand may carry both upstream and downstream.
It is sometimes referred to as BiDi for bi-directional usage of one
fiber.
Optics must be paired such that the RX and TX wavelengths cross over,
with one side often called U(pstream) and the other D(ownstream).
This technology is useful for increasing link density or working around
construction issues, and is also frequently used as a last mile delivery
technology for FTTx.
MFC after: 3 days
Sponsored by: BBOX.io (review/commits)
Pull Request: https://github.com/freebsd/freebsd-src/pull/1518
The Release Hardware Notes are generated from hardware sections in the
manual pages. Create or organize these sections in Wi-Fi driver manuals
for information flow, and perform minor maintenance on them while here.
After some testing, we have determined that a compact column list is
the best for a single column listing in the hardware release notes.
This makes very clean subsections and is for some reason denser than
using a tagged list.
This adds the long requested conversion from netmask to cidr examples.
These examples probably shouldn't even be here, but that is a discussion
for another day.
MFC after: 3 days
X-MFC with: 8f1a2d507e
Reported by: bz (relnotes generation, cidr, test-net-1 ip4addr)
Reported by: grahamperrin (HARDWARE order mentioned in fdp-primer)
Reported by: Graham Percival <gperciva@tarsnap.com> (don't prompt)
Reviewed by: bz (anything wrong likely is my polishing fault; incl. iwm.4)
Differential Revision: https://reviews.freebsd.org/D47508
6d8a5eacae virtualized ipfilter for VNET. A few remnants of old
defunct code remained. Remove them. At the time it was not known if
6d8a5eacae would cause any issues. As it's been a number of years
since the conversion was done, it's certainly safe to remove the
dead code.
MFC after: 1 week
During installation bsdinstall asks (via tzsetup):
> Is this machine's CMOS clock set to UTC? If it is set to local time,
> or you don't know, please choose NO here!
Most operating systems, except for Windows, use UTC in the hardware
real-time clock by default. This question from tzsetup is presumably
intended to aid in dual-boot-with-Windows configurations, but these
represent a fraction of all FreeBSD installs.
Rather than asking this question on every install just default to UTC.
Users who want to dual-boot Windows can create /etc/wall_cmos_clock.
We can look at making this smarter in the future.
Reviewed by: bapt, brooks, brd, cy, 0mp, ngie
Relnotes: yes
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D45569
This allows the flags to be picked up more easily when building external
modules.
Sponsored by: Juniper Networks, Inc.
Reviewed by: markj (earlier)
Differential Revision: https://reviews.freebsd.org/D45563
The timeout function still tries to acquire the rwlock, and now it
deadlocks, since the callout framework will have already acquired it.
This reverts commit 1fa6daaafd.
PR: 282478
Reported by: markj
Approved by: emaste (mentor)
We prefer something like "if (count != 0)" over "if (count)" for
non-boolean variables. This was implicit in examples, but was unclear
for some new contributors. Attempt to clarify by providing a more
explicit statement and example.
Reviewed by: imp
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D30507
Some pf tests check the output of pfctl -s[sSr] to find if relevant
states, source nodes or rules exist and if their counters have proper
values. The output is multiple lines per entry and contains varying
amount of whitespace. This makes parsing it rather hard.
Provide a function for standardization of output of pfctl -s[sSr] which
converts the output to a single line per entry and reduces whitespace
always to a single space. Adjust existing tests to make use of this
function.
Revieved by: kp
Approved by: kp (mentor)
Differental Revision: https://reviews.freebsd.org/D47435
The functions pf_clear_srcnodes() and pf_kill_srcnodes() serve the same
purpose, however the former kills all source nodes while the later only
a selected subset of them.
They differ in how they reach that goal. pf_clear_srcnodes() first
iterates over all states and detaches the source nodes from them. Then
it iterates over all source nodes and marks them as expired leaving the
cleanup to pf_purge_expired_src_nodes().
If a new state and a new source node are created between iterating over
all states and all source nodes, this source node will have its state
counter set to 0 and expiry to 1, marking it as expired without properly
detaching the state from it. Later the source node will be freed with
the state sill pointing to it.
The function pf_kill_srcnodes() performs the same operation in a safer
manner by first marking the required source nodes as expiring and then
iterating over all states and checking which states point to expiring
nodes. Any source node created between iterating over states and source
nodes will simply be ignored.
Add functionality of killing all source nodes to pf_kill_srcnodes().
Replace all calls to pf_clear_srcnodes() with a calls to
pf_kill_srcnodes(), and remove the former.
Reviewed by: kp
Approved by: kp (mentor)
Differential Revision: https://reviews.freebsd.org/D47440
It was disabled by default in fe52b7f60e. We planned to (but did not)
remove the option before FreeBSD 14. Remove it now, for FreeBSD 15.
Relnotes: Yes
Reviewed by: imp
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D31558
It was introduced by the recent commit [1].
1. 58f194223a ifnet: Add handling for toggling IFF_ALLMULTI in ifhwioctl()
Reviewed by: markj
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D47511
Avoid calling _callout_stop_safe with a non-sleepable lock held when
detaching by initializing callout_init_rw() with CALLOUT_SHAREDLOCK.
It avoids the following WITNESS warning when stopping the service:
# service ipfilter stop
calling _callout_stop_safe with the following non-sleepable locks held:
shared rw ipf filter load/unload mutex (ipf filter load/unload mutex) r = 0 (0xffff0000417c7530) locked @ /usr/src/sys/netpfil/ipfilter/netinet/fil.c:7926
stack backtrace:
#0 0xffff00000052d394 at witness_debugger+0x60
#1 0xffff00000052e620 at witness_warn+0x404
#2 0xffff0000004d4ffc at _callout_stop_safe+0x8c
#3 0xffff0000f7236674 at ipfdetach+0x3c
#4 0xffff0000f723fa4c at ipf_ipf_ioctl+0x788
#5 0xffff0000f72367e0 at ipfioctl+0x144
#6 0xffff00000034abd8 at devfs_ioctl+0x100
#7 0xffff0000005c66a0 at vn_ioctl+0xbc
#8 0xffff00000034b2cc at devfs_ioctl_f+0x24
#9 0xffff0000005331ec at kern_ioctl+0x2e0
#10 0xffff000000532eb4 at sys_ioctl+0x140
#11 0xffff000000880480 at do_el0_sync+0x604
#12 0xffff0000008579ac at handle_el0_sync+0x4c
PR: 282478
Suggested by: markj
Reviewed by: cy
Approved by: emaste (mentor)
MFC after: 1 week
Include the IP address in the message when a hashnode add error occurs.
This helps to identify the ippool.conf statement that the error occurred.
MFC after: 1 week
Replace inet_ntoa(3) with inet_ntop(3). This supporting the printing of
IPv6 IP addresses in addition to IPv4 IP addresses in error message.
MFC after: 1 week
When a node in a tree is discovered in error, i.e. duplicate, the
IP address of the node is printed but no closing bracket completes
the node in the message. Fix this.
MFC after: 1 week
As with when printing errors for failed poolnodes, printing the hash
node (IP address) only leads to speculation which hash pool the failed
add occurred. This is especially useful when the same IP address is
listed in multiple hash pools.
MFC after: 1 week
Printing the pool node (IP address) only leads to speculation which
pool the failed add occurred. This is especially useful when the same
IP address is listed in multiple pools.
MFC after: 1 week
Avoid overrunning the message buffer when printing an ippool btree error.
We do this in two ways. First we increase the message buffer from 80 to
255 bytes and secondly we replace strcat(3) with strlcat(3).
MFC after: 1 week
The downstream (FreeBSD) ntp man pages are out of date. Switch to those
provided by ntp.org (nwtime.org).
PR: 104493
Differential Revision: https://reviews.freebsd.org/D47319