Fix the send --exclude option to work with encryption
When using --exclude, filtering needs to take place in two places:
in zfs_main.c via the callback previously added to support the
options, and in libzfs_sendrecv.c because it generates the nvlist
during a first pass, and that results in it complaining if the
excluded dataset is not available for sending. (eg, excluding an
encrypted dataset so you don't have to use --raw wouldn't work,
because the first pass would look at the dataset and decide you
couldn't use it.) Add send --exclude tests, including one that tests
excluding an encrypted hierarchy.
Reviewed-by: Allan Jude <allan at klarasystems.com>
Reviewed-by: Alexander Motin <alexander.motin at TrueNAS.com>
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Sean Eric Fagan <sef at kithrup.ie>
Closes #18278
Fix SNMP trap alerts failing to load TRUENAS-MIB
Commit 6a01cb9b removed the pre-compiled TRUENAS-MIB.py from
/usr/local/share/pysnmp/mibs/, but the SNMP trap alert service still
expected to load the MIB as a pre-compiled .py file from that path.
Replace with pySMI's addMibCompiler to compile the ASN.1 .txt MIB source
on-the-fly instead.
zstream: add a drop_record subcommand
It can be used to drop extraneous records in a send stream caused by a
corrupt dataset, as in issue #18239.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Alan Somers <asomers at gmail.com>
Sponsored by: ConnectWise
Closes #18275
libzfs: scrub: only include start and end nv pairs if needed for scrub
This patch addresses running `zpool scrub <pool>` with ZFS 2.4 userspace
while the loaded kernel module is still 2.3, failing with:
```
cannot scrub <pool>: the loaded zfs module does not support an option
for this operation. A reboot may be required to enable this option.
```
Checking for the source of the message via `strace` showed the scrub
ioctl failing and setting errno to ZFS_ERR_IOC_ARG_UNAVAIL[0]. With
that and the comments in `module/zfs/zfs_ioctl.c`[1] commit: 894edd084
seemed like a likely cause for the backward incompatibility.
The corresponding kernelspace code in `module/zfs/zfs_ioctl.c` defaults
to a setting of 0 if either parameter is not set, so not providing the
nvpairs in case both are 0 should not make a semantic difference.
Tested by:
[19 lines not shown]
[libc] Add missing iswdigit to wctype.yaml and Windows entrypoints (#186023)
`iswdigit` was implemented
(https://github.com/llvm/llvm-project/pull/181635) but not declared in
the generated wctype.h (wctype.yaml) and was missing from the Windows
config entrypoints.
This pr declares iswdigit in wctype.h and enables it for the Windows
config.
also is part of https://github.com/llvm/llvm-project/issues/185136.
[SampleProfile] Skip counting mismatched weak symbols during profile loading (#185514)
Weak symbols may be overridden during linking, and this may cause
profile mismatch when compiling the weak symbols, while the profile was
created based on the overriding function. Skip counting the weak symbol
while checking the mismatched function profiles to avoid false alarm on
rejecting legit profiles.
[acc] Introduce ACCRoutineLowering for `acc routine` specialization (#186243)
This pass handles `acc routine` directive by creating specialized
functions with appropriate parallelism information that can be used for
eventual creation of device function.
For each acc.routine that is not bound by name, the pass creates a new
function (the "device" copy) whose body is a single acc.compute_region
containing a clone of the original (host) function body. Parallelism is
expressed by one acc.par_width derived from the routine's clauses (seq,
vector, worker, gang). The device copy created is simply a staging place
for eventual move to device module level function.
---------
Co-authored-by: Delaram Talaashrafi <dtalaashrafi at nvidia.com>
[VPlan] Account for any-of costs in legacy cost model
Some VPlan transforms, like vectorizing fmin without fast-math,
introduce AnyOfs, which have costs assigned in the VPlan-based cost
model, but not the legacy cost model. Account for their cost like done
for other similar VPInstrctions, like EVL.
Fixes https://github.com/llvm/llvm-project/issues/185867.
[Clang] Check sanitizer ignorelist for divrem overflow (#185721)
Instrumentation emitted for overflow by division was not checking with the sanitizer case list's type entries.
The original type-based ignorelist support (#107332) added `isTypeIgnoredBySanitizer` calls to `CanElideOverflowCheck`, which covers `+`, `-`, `*`, `++`, `--`. However, division and remainder have a separate code path in `EmitUndefinedBehaviorIntegerDivAndRemCheck` that never calls `CanElideOverflowCheck` or checks the ignorelist directly.
Add a check so that the SCL is honored for the div/rem case.
[lldb] Unify logging for GetAttributeAddressRanges error (#186258)
Use the same format string in DWARFCompileUnit.cpp as we do everywhere
else to report the error from GetAttributeAddressRanges. I noticed the
inconsistency when looking at our system log:
```
2026-03-12 05:36:48.600914 -0700 0x2e66: DIE has no address range information
2026-03-12 05:36:48.600950 -0700 0x2e8c: DIE has no address range information
2026-03-12 05:36:48.601068 -0700 DIE(0x1dc2): DIE has no address range information
2026-03-12 05:36:48.631000 -0700 DIE(0x80f4): DIE has no address range information
```
Add the --file-layout (-f) option to zdb(8)
Displays the physical raidz block layout for a given file.
This leverages the internal vdev_raidz_map_alloc() function to find
the map of how the block data is laid out across the child disks.
The column entry for each row looks like:
+------------+
| D2 43 |
| 6020da |
+------------+
representing here the logical data column 2 that is 43 sectors high
starting at sector 0x6020da.
With -H, the output is a list of disks, LBAs, and block counts,
given in 512 byte block values.
Sponsored-by: Klara, Inc.
Sponsored-by: Wasabi Technology, Inc.
[4 lines not shown]
[lldb] Turn on OSC 9;4 graphical progress in supported terminals (#185541)
In #162162, I added support for OSC 9;4 graphical progress. I put it
behind the `show-progress` setting because I didn't have a reliable way
to detect whether the escape code was supported by the terminal.
Since then, more tools have added support for it, most notably Claude
Code and Homebrew. While I still don't have a good way to detect this,
there are a handful of known terminals that are easy enough to identify.
This PR toggles the default of `show-progress` to on again and puts
showing the progress behind a check for those known terminals (Windows
Terminal, ConEmu & Ghostty).
This means that if you're running in one of those, you'll get the visual
progress by default unless you set `show-progress` to off. The downside
is that if you're on an unrecognized terminal, you can't force it on any
longer by setting `show-progress` to on. I think that's a fair trade-off
as the setting wasn't really advertised and I doubt many people are
using that. As a workaround, they can set `OSC_PROGRESS` to spoof an
OSC-supporting terminal.
[mlir][tosa] Add concat_shape Op folder (#183293)
Apply compile time folding for TOSA.CONCAT_SHAPE
---------
Signed-off-by: Udaya Ranga <udaya.ranga at arm.com>
net/wol: add access to get_arp so dashboard widget works
For core the dashboard ACL holds all the dashboard related API
patterns but we don't want to taint it with plugin requirements.
So instead of adding a WoL-Dashboard privilege add the required
API endpoint to the standard ACL to unbreak. This is only relevant
for the plugin when installed and explicitly using the privilege.
[clang] Expose normalized module cache path in `HeaderSearch` (#185746)
Previously, the normalized module cache path was only accessible via
`HeaderSearch::getSpecificModuleCachePath()` which may or may not also
contain the context hash. Clients would need to parse the result to
learn the normalized module cache path. What `ASTWriter` does instead is
normalize the as-written module cache path redundantly.
Instead, this PR exposes the normalized module cache path in the
`HeaderSearch` interface and moves the computation of specific module
cache path into the clangLex library.
This is motivated by another patch that would've needed to redundantly
perform the module cache path canonicalization or parse the specific
module cache path.
[clang][ssaf] Add LUSummary consumer APIs
This patch adds the consumer-side infrastructure for the Scalable Static
Analysis Framework (SSAF). After the EntityLinker produces a LUSummary,
these new components build typed analysis data from it.
- `SummaryData` — A base class for analysis views to expose
analysis-specific query API.
- `SummaryDataBuilder` — An abstract base class that populates a
concrete `SummaryData`.
- `SummaryDataBuilderRegistry` — A registry wrapper for
`SummaryDataBuilder` class.
- `SummaryDataStore` - A wrapper containing a map from `SummaryName` to
`SummaryData`, returned as a result of running the `LUSummaryConsumer`.
- `LUSummaryConsumer` — Drives the process of populating `SummaryData`
instances from `LUSummary` via corresponding `SummaryDataBuilder`
instances.
[MCP] Never eliminate frame-setup/destroy instructions
Presumably targets only insert frame instructions which are significant,
and there may be effects MCP doesn't model. Similar to reserved registers this
is probably overly conservative, but as this causes no codegen change in
any lit test I think it is benign.
The motivation is just to clean up #183149 for AMDGPU, as we can spill
to physical registers, and currently have to spill the EXEC mask purely
to enable debug-info.
Change-Id: I9ea4a09b34464c43322edd2900361bf635efd9f7
[MCP][NFC] Opinionated refactoring using new type
There are a few minor inconsistencies across the pass which I found mildly
distracting:
* The use of `Def`/`Dest`/`Dst` to refer to the same thing
* Inconsistent declaration order of `Def`/`Src` vs `Src`/`Def`
* Lots of `->getReg()->asMCReg()`, and uses of `Register` when the pass
is always running after RA anyway.
* Some places explicitly `assert(isCopyInstr)` while others just deref
the `optional`.
The refactor uses structured bindings for a couple reasons:
* Naturally enforces consistent order of `Def`-then-`Src`
* Requires the use of `auto`, which ensures the declaration is not
implicitly converting from `MCRegister` back to `Register`.
In both cases the explicitness of the name `getDefSrcMCRegs` hopefully
[9 lines not shown]