iflib: clear the deferred TX descriptor state when a queue is stopped
Stopping an interface frees the queued mbufs and zeroes a transmit
queue's descriptor accounting, but the three counters that track
descriptors deferred to a later doorbell write or report-status
request are not cleared there: they only reach zero when the code
that acts on them runs. After a reset they therefore describe
descriptors that no longer exist, until enough new traffic flushes
them.
The consequences are small - one doorbell written from a stale
count, and a report-status request on the first packet after the
reset - but the state is simply wrong, and the transmit-hang check
in iflib_timer() reads one of them.
MFC after: 1 week
Assisted-by: Claude Code (Opus 5)
iflib: remove the unused TX queue state machine
The previous commit stopped using ift_qstatus and the IFLIB_QUEUE_*
states for the TX watchdog decision, leaving only dead stores.
Remove the field, the states, and all assignments. The byte the
field frees stays behind as explicit padding. No functional change.
Reviewed by: gallatin, markj
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D58282
Assisted-by: Claude Code (Fable 5, Opus 5)
iflib: restore TX watchdog functionality
Since f6afed726b00 the TX-hang check in iflib_timer() has required a
queue state other than IFLIB_QUEUE_IDLE, but nothing ever sets
IFLIB_QUEUE_WORKING, so IFLIB_QUEUE_HUNG has been unreachable ever
since: stalled TX queues are not detected, not reported, and not
reset - the TX watchdog of every iflib(4) driver has been dead code.
Instead of resurrecting the queue-state machine, detect the hang
directly. A transmit queue is frozen while it holds descriptors the
hardware has not reported as completed and none were reclaimed over a
timer period. Being frozen is not a fault: the hardware may defer
marking descriptors as completed indefinitely. The check therefore
arms only when a frozen queue also takes on new work, while the link
is up, no pause frames were received and no doorbell is pending; and
it acts only after the queue has stayed frozen for
net.iflib.tx_watchdog_periods consecutive periods. It then asks the
hardware through the driver's read-only credits peek
(isc_txd_credits_update with clear=false, the same call the mp_ring
[46 lines not shown]
textproc/ripgrep: Update 15.1.0 => 15.2.0
This release fixes a number of bugs related to gitignore matching as well as
some performance improvements in directory tree traversal.
While here, strip installed binary to satisfy stage-qa.
Changelog:
https://github.com/BurntSushi/ripgrep/releases/tag/15.2.0
PR: 297272
Reported by: Petteri Valkonen <petteri.valkonen at iki.fi> (maintainer)
Approved by: osa, vvd (Mentors, implicit)
MFH: 2026Q3
(cherry picked from commit 5ee5377e1506c9972bf0498f65d0c59d25fa0056)
textproc/ripgrep: Update 15.1.0 => 15.2.0
This release fixes a number of bugs related to gitignore matching as well as
some performance improvements in directory tree traversal.
While here, strip installed binary to satisfy stage-qa.
Changelog:
https://github.com/BurntSushi/ripgrep/releases/tag/15.2.0
PR: 297272
Reported by: Petteri Valkonen <petteri.valkonen at iki.fi> (maintainer)
Approved by: osa, vvd (Mentors, implicit)
MFH: 2026Q3
fix p9fs_vget_common() panics
This addresses a race when two vnodes attempt to call vfs_hash_insert(),
but only one succeeds. Also, in case of an error from
p9fs_reload_stats_dotl(), it marks the vnode for deletion.
Reviewed by: kib
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D58632
nfs_commonkrpc.c: Get rid of NFSv4.0 delegation cruft
Delegations in NFSv4.0 never worked well and, since
the NFSv4.0 protocol is now deprecated, use of delegations
for NFSv4.0 is disabled as far as the client can do so.
It turns out that some Illumos NFSv4.0 server issues
delegations anyhow (even when the callback path is
specified as 0.0.0.0) and this can cause use after free
problems.
This patch deleted some cruft that did an nfsrpc_openrpc()
call recursively when an NFSv4.0 server failed to issue
a delegation when it had previously done so.
This code was only meant to be an optimization and
would have been rarely exercised. Since this recursive
call of nfsrpc_openrpc() is in some of the backtraces
in the bugzilla PR, getting rid of the cruft makes sense.
[5 lines not shown]
manuals: Fix more Fx and nearby mechanical typos
Fix compiler warnings related to the Fx macro, as well as all other
mechanical typos that were visible within one screenful of them. These
cause rendering glitches on various toolchains with various of the five
and a half decades of rich output formats and tooling manpages scale to.
The *x macro set specifies operating systems. These macros take the rest
of the line as an argument. Sometimes, a space was not used to separate
the argument of Fx and the trailing period. Others had other parts of
the sentence supplied as an argument to Fx.
While here, fix the other mechanical typos visible on those specific
screenfulls. Correct section typo AUTHOR to AUTHORS, markup utilities
with Sy, and apply line break after the end of a sentence.
PR: 297248
MFC after: 3 days
Reported by: wosch (are you sure that's all of the broken Fx'es?)
[5 lines not shown]
misc/mc6: Midnight Commander fork with plugins (new port)
Also features new archive manager built on libarchive that
replaces the legacy built-in tarfs and cpiofs VFS modules.
Via: https://www.opennet.ru/opennews/art.shtml?num=66018