FreeBSD/src 6a903d9sys/dev/ixgbe if_ix.c

ixgbe: Report hardware initialization failures to iflib

Check the result of ixgbe_init_hw() before configuring queues. Report
failure through iflib_init_failed() instead of publishing a working
datapath after shared-code initialization failed.

MFC after:      2 weeks
Sponsored by:   BBOX.io
DeltaFile
+8-1sys/dev/ixgbe/if_ix.c
+8-11 files

HardenedBSD/src f9c0828lib/libbsdconf bsdconf_put.c, sbin/ping/tests test_ping.py

Merge remote-tracking branch 'rad/hardened/current/master' into hardened/current/cross-dso-cfi
DeltaFile
+192-23sys/dev/hyperv/netvsc/if_hn.c
+39-1sbin/ping/tests/test_ping.py
+23-14sys/dev/ixgbe/if_ix.c
+28-1sys/dev/ice/if_ice_iflib.c
+13-11sys/dev/ice/ice_osdep.h
+11-11lib/libbsdconf/bsdconf_put.c
+306-6115 files not shown
+409-9121 files

HardenedBSD/src 90a6330lib/libbsdconf bsdconf_put.c, sbin/ping/tests test_ping.py

Merge remote-tracking branch 'rad/hardened/current/master' into hardened/current/pledge
DeltaFile
+192-23sys/dev/hyperv/netvsc/if_hn.c
+39-1sbin/ping/tests/test_ping.py
+23-14sys/dev/ixgbe/if_ix.c
+28-1sys/dev/ice/if_ice_iflib.c
+13-11sys/dev/ice/ice_osdep.h
+11-11lib/libbsdconf/bsdconf_put.c
+306-6115 files not shown
+409-9121 files

HardenedBSD/src b37f732contrib/xz ChangeLog, contrib/xz/src/common my_landlock.h

Merge remote-tracking branch 'rad/hardened/15-stable/main' into hardened/15-stable/pledge
DeltaFile
+1,488-0contrib/xz/ChangeLog
+172-92contrib/xz/src/liblzma/common/index.c
+76-82contrib/xz/src/xz/xz.1
+49-10contrib/xz/src/liblzma/common/index_decoder.c
+29-12contrib/xz/src/common/my_landlock.h
+20-16contrib/xz/src/liblzma/check/crc32_arm64.h
+1,834-21224 files not shown
+2,016-28730 files

HardenedBSD/src 8dec2balib/libbsdconf bsdconf_put.c, sbin/ping/tests test_ping.py

Merge branch 'freebsd/current/main' into hardened/current/master
DeltaFile
+192-23sys/dev/hyperv/netvsc/if_hn.c
+39-1sbin/ping/tests/test_ping.py
+23-14sys/dev/ixgbe/if_ix.c
+28-1sys/dev/ice/if_ice_iflib.c
+13-11sys/dev/ice/ice_osdep.h
+11-11lib/libbsdconf/bsdconf_put.c
+306-6115 files not shown
+409-9121 files

HardenedBSD/src afdda58contrib/xz ChangeLog, contrib/xz/src/common my_landlock.h

Merge branch 'freebsd/15-stable/main' into hardened/15-stable/main
DeltaFile
+1,488-0contrib/xz/ChangeLog
+172-92contrib/xz/src/liblzma/common/index.c
+76-82contrib/xz/src/xz/xz.1
+49-10contrib/xz/src/liblzma/common/index_decoder.c
+29-12contrib/xz/src/common/my_landlock.h
+20-16contrib/xz/src/liblzma/check/crc32_arm64.h
+1,834-21224 files not shown
+2,016-28730 files

LLVM/project 410c7e4lld/test/ELF/lto riscv-target-abi.ll, llvm/lib/Target/RISCV RISCVAsmPrinter.cpp

[RISCV] Do not re-validate target ABI in AsmParser if already resolved by streamer (#223606)

Commit 105ff16f816f (https://github.com/llvm/llvm-project/pull/213410)
changed RISCVABI::computeTargetABI() to return Expected<ABI> and added
validation to RISCVAsmParser::onBeginOfFile() to report invalid
-target-abi flags with real source location in llvm-mc.

However, this broke LTO builds containing inline assembly (e.g. Android
riscv64 builds and downstream Rust in
https://github.com/rust-lang/rust/pull/162783). During LTO, LLD sets
TargetOptions.MCOptions.ABIName from the module's target-abi metadata
("lp64d"), while the linker's default TargetMachine subtarget lacks
"+d" (individual functions specify "+d" in target-features).
RISCVSubtarget handles this gracefully by emitting a diagnostic note
and falling back to lp64 for code generation. When inline assembly was
subsequently parsed, AsmPrinter::emitInlineAsm instantiated
RISCVAsmParser with a subtarget lacking "+d", causing onBeginOfFile() to
re-validate TargetOptions.ABIName and fail with a fatal error.


    [5 lines not shown]
DeltaFile
+13-3lld/test/ELF/lto/riscv-target-abi.ll
+12-1llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
+3-5llvm/lib/Target/RISCV/MCTargetDesc/RISCVELFStreamer.cpp
+3-0llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp
+1-0llvm/lib/Target/RISCV/MCTargetDesc/RISCVTargetStreamer.h
+32-95 files

HardenedBSD/ports aaaed46deskutils/tatuin Makefile.crates distinfo, math/gap Makefile pkg-plist

Merge branch 'freebsd/main' into hardenedbsd/main
DeltaFile
+22,697-10,125math/gap/pkg-plist
+1,257-1,803www/librewolf/files/patch-libwebrtc-generated
+523-461deskutils/tatuin/distinfo
+260-229deskutils/tatuin/Makefile.crates
+108-11math/gap/Makefile
+64-46www/librewolf/files/patch-third__party_libwebrtc_build_config_BUILDCONFIG.gn
+24,909-12,67552 files not shown
+25,112-12,89458 files

FreeBSD/src 444168asys/dev/ixl ixl_pf_iov.c ixl_pf_iflib.c

ixl: Tie statistics baselines to hardware resource epochs

Raw VSI statistics belong to the firmware-assigned counter index and are
reset when firmware recreates the VSI.  Reusing a baseline across either
event makes a counter decrease look like a full width rollover.

Reset the PF and main VSI baselines when rebuilding hardware resources.
Start a new baseline when firmware assigns a different PF counter index
and whenever it allocates a VF VSI.  Ordinary interface reinits which
retain the hardware resources continue to retain their statistics.

This follows the lifecycle used by ice without placing an unconditional
statistics reset in ixl_initialize_vsi(), which also runs during ordinary
iflib initialization.

MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59337
DeltaFile
+10-1sys/dev/ixl/ixl_pf_iflib.c
+2-0sys/dev/ixl/ixl_pf_iov.c
+12-12 files

HardenedBSD/src 444168asys/dev/ixl ixl_pf_iov.c ixl_pf_iflib.c

ixl: Tie statistics baselines to hardware resource epochs

Raw VSI statistics belong to the firmware-assigned counter index and are
reset when firmware recreates the VSI.  Reusing a baseline across either
event makes a counter decrease look like a full width rollover.

Reset the PF and main VSI baselines when rebuilding hardware resources.
Start a new baseline when firmware assigns a different PF counter index
and whenever it allocates a VF VSI.  Ordinary interface reinits which
retain the hardware resources continue to retain their statistics.

This follows the lifecycle used by ice without placing an unconditional
statistics reset in ixl_initialize_vsi(), which also runs during ordinary
iflib initialization.

MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59337
DeltaFile
+10-1sys/dev/ixl/ixl_pf_iflib.c
+2-0sys/dev/ixl/ixl_pf_iov.c
+12-12 files

FreeBSD/ports f50800cx11-toolkits/wlroots018 distinfo Makefile

x11-toolkits/wlroots018: unbreak build with clang 21

../xcursor/xcursor.c:605:8: error: initializing 'char *' with an expression of type 'const char *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
  605 |         char *colon = strchr(path, ':');
      |               ^       ~~~~~~~~~~~~~~~~~

Reported by:    pkg-fallout

(cherry picked from commit 539e45eb457cbd442b34fedf5d75868f5ba8803a)
DeltaFile
+4-1x11-toolkits/wlroots018/Makefile
+2-0x11-toolkits/wlroots018/distinfo
+6-12 files

FreeBSD/ports 539e45ex11-toolkits/wlroots018 distinfo Makefile

x11-toolkits/wlroots018: unbreak build with clang 21

../xcursor/xcursor.c:605:8: error: initializing 'char *' with an expression of type 'const char *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
  605 |         char *colon = strchr(path, ':');
      |               ^       ~~~~~~~~~~~~~~~~~

Reported by:    pkg-fallout
DeltaFile
+4-1x11-toolkits/wlroots018/Makefile
+2-0x11-toolkits/wlroots018/distinfo
+6-12 files

HardenedBSD/ports 539e45ex11-toolkits/wlroots018 distinfo Makefile

x11-toolkits/wlroots018: unbreak build with clang 21

../xcursor/xcursor.c:605:8: error: initializing 'char *' with an expression of type 'const char *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
  605 |         char *colon = strchr(path, ':');
      |               ^       ~~~~~~~~~~~~~~~~~

Reported by:    pkg-fallout
DeltaFile
+4-1x11-toolkits/wlroots018/Makefile
+2-0x11-toolkits/wlroots018/distinfo
+6-12 files

LLVM/project 45c1a19clang/lib/AST/ByteCode Pointer.h Interp.cpp, clang/test/CodeGen cfstring2.c

[clang][bytecode] Accept pointer casts of expr-based opaque pointers (#223982)

We create opaque pointers for a few types of "opaque" expressions, where
we need to just pass the pointer along to the end of the evaluation and
such pointer casts are fine on those.
DeltaFile
+2-2clang/lib/AST/ByteCode/Interp.cpp
+1-0clang/test/CodeGen/cfstring2.c
+1-0clang/lib/AST/ByteCode/Pointer.h
+4-23 files

LLVM/project 5789534clang/include/clang/Basic BuiltinsNVPTX.td, clang/lib/CodeGen/TargetBuiltins NVPTX.cpp

[clang][NVPTX] Add support for pzo in f32/f16x2/bf16x2 to FP8 and FP6 conversions (#222511)

This patch adds support for `pzo` variants and `rz` rounding mode 
to existing `f32/f16x2/bf16x2` to `FP8` (`e4m3x2`, `e5m2x2`) and
`FP6` (`e2m3x2`, `e3m2x2`) conversion intrinsics.

Also adds `clang builtins` for the new variants.

Tests have been verified through `ptxas-13.4`.

PTX ISA Reference:
https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#data-movement-and-conversion-instructions-cvt

---------

Signed-off-by: DharuniRAcharya <dharunira at nvidia.com>
DeltaFile
+407-0llvm/test/CodeGen/NVPTX/convert-fp6-pzo.ll
+407-0llvm/test/CodeGen/NVPTX/convert-fp8-pzo.ll
+61-52llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
+78-0clang/include/clang/Basic/BuiltinsNVPTX.td
+39-20clang/test/CodeGen/builtins-nvptx.c
+50-0clang/lib/CodeGen/TargetBuiltins/NVPTX.cpp
+1,042-725 files not shown
+1,136-13511 files

LLVM/project 9062217lldb/include/lldb/Symbol Function.h, lldb/source/Expression DWARFExpression.cpp

[lldb] Stop caching cross-module callees in CallEdge (#224165)

DirectCallEdge cached the Function it resolved for its callee. A
CallEdge is owned by a Module in the shared module cache, so it
outlives any one Target, while the callee it resolves to depends on
that Target's image list and dies with its own module. The cached
pointer dangled once the callee's module was unloaded, crashing the
next backtrace that walked tail call frames.

Keep only the symbol name and re-resolve on every call. GetCallee
returns a SymbolContext so the caller holds the callee's module for as
long as it uses the Function.

Scoping the lookup to the caller's own module or compile unit would
also make the cache safe, but direct tail call edges cross module
boundaries by design. Clang points DW_AT_call_origin at a declaration
DIE when the callee is external. See the cross_dso tail call test.

rdar://181262163
DeltaFile
+128-0lldb/unittests/Symbol/CallEdgeTest.cpp
+26-28lldb/source/Symbol/Function.cpp
+18-19lldb/source/Target/StackFrameList.cpp
+17-8lldb/include/lldb/Symbol/Function.h
+3-3lldb/source/Expression/DWARFExpression.cpp
+1-0lldb/unittests/Symbol/CMakeLists.txt
+193-586 files

HardenedBSD/src 5abfd8fsys/dev/ixgbe if_ix.c

ixgbe: Defer flow control programming while admission is closed

Cache a validated flow control setting without touching hardware when
iflib has closed admission.  The queues may still be live pending a
watchdog stop, or the device may already be stopped or suspended.  RX
initialization and link setup replay the cached flow control policy.

For live updates, decide once under the context lock whether to touch
hardware, then mask MDD around SRRCTL writes regardless of a concurrent
watchdog closing admission.  The context lock excludes actual stop and
reinitialization while these writes are in progress.

MFC after:      2 weeks
Sponsored by:   BBOX.io
DeltaFile
+8-6sys/dev/ixgbe/if_ix.c
+8-61 files

FreeBSD/src 5abfd8fsys/dev/ixgbe if_ix.c

ixgbe: Defer flow control programming while admission is closed

Cache a validated flow control setting without touching hardware when
iflib has closed admission.  The queues may still be live pending a
watchdog stop, or the device may already be stopped or suspended.  RX
initialization and link setup replay the cached flow control policy.

For live updates, decide once under the context lock whether to touch
hardware, then mask MDD around SRRCTL writes regardless of a concurrent
watchdog closing admission.  The context lock excludes actual stop and
reinitialization while these writes are in progress.

MFC after:      2 weeks
Sponsored by:   BBOX.io
DeltaFile
+8-6sys/dev/ixgbe/if_ix.c
+8-61 files

LLVM/project bf375c5llvm/lib/Target/SPIRV SPIRVSubtarget.cpp

SPIRV: Avoid using TargetMachine::createDataLayout in subtarget (#224014)
DeltaFile
+6-1llvm/lib/Target/SPIRV/SPIRVSubtarget.cpp
+6-11 files

HardenedBSD/src f5dc44csys/dev/ixgbe if_ix.c

ixgbe: Apply DMAC changes through an if-up reset request

Serialize cached DMA coalescing policy with initialization and schedule
its application through the admin task.  The old running check
preceded if_init() acquiring the context lock, so an intervening down
operation could be followed by an unconditional initialization.

Use the deferred if-up request so restart permission is checked when the
task runs.  Changes made while stopped or suspended remain cached for
the next initialization.  Do not schedule a reset for an unchanged value.

MFC after:      2 weeks
Sponsored by:   BBOX.io
DeltaFile
+15-8sys/dev/ixgbe/if_ix.c
+15-81 files

FreeBSD/src f5dc44csys/dev/ixgbe if_ix.c

ixgbe: Apply DMAC changes through an if-up reset request

Serialize cached DMA coalescing policy with initialization and schedule
its application through the admin task.  The old running check
preceded if_init() acquiring the context lock, so an intervening down
operation could be followed by an unconditional initialization.

Use the deferred if-up request so restart permission is checked when the
task runs.  Changes made while stopped or suspended remain cached for
the next initialization.  Do not schedule a reset for an unchanged value.

MFC after:      2 weeks
Sponsored by:   BBOX.io
DeltaFile
+15-8sys/dev/ixgbe/if_ix.c
+15-81 files

HardenedBSD/src 24f8c4esys/dev/enic if_enic.c

enic: Report device enable failures to iflib

Do not publish a running interface after vnic_dev_enable_wait() fails.
Run the existing stop cleanup for the queues configured before the enable
request, then report initialization failure to iflib.

Mark those queues as needing cleanup before submitting the enable request
so the stopped-state shortcut cannot skip the unwind.

MFC after:      2 weeks
Sponsored by:   BBOX.io
DeltaFile
+11-4sys/dev/enic/if_enic.c
+11-41 files

FreeBSD/src 24f8c4esys/dev/enic if_enic.c

enic: Report device enable failures to iflib

Do not publish a running interface after vnic_dev_enable_wait() fails.
Run the existing stop cleanup for the queues configured before the enable
request, then report initialization failure to iflib.

Mark those queues as needing cleanup before submitting the enable request
so the stopped-state shortcut cannot skip the unwind.

MFC after:      2 weeks
Sponsored by:   BBOX.io
DeltaFile
+11-4sys/dev/enic/if_enic.c
+11-41 files

HardenedBSD/src be36ceesys/dev/enic if_enic.c

enic: Clean the completion ring matching each queue

The transmit stop loop cleaned the receive completion ring, and the
receive stop loop cleaned the transmit completion ring.  Use enic_cq_wq()
for transmit queues and enic_cq_rq() for receive queues, matching the
queue indices used by the remaining ring bookkeeping.

MFC after:      2 weeks
Sponsored by:   BBOX.io
DeltaFile
+2-2sys/dev/enic/if_enic.c
+2-21 files

FreeBSD/src be36ceesys/dev/enic if_enic.c

enic: Clean the completion ring matching each queue

The transmit stop loop cleaned the receive completion ring, and the
receive stop loop cleaned the transmit completion ring.  Use enic_cq_wq()
for transmit queues and enic_cq_rq() for receive queues, matching the
queue indices used by the remaining ring bookkeeping.

MFC after:      2 weeks
Sponsored by:   BBOX.io
DeltaFile
+2-2sys/dev/enic/if_enic.c
+2-21 files

LLVM/project 00d7ba1clang/include/clang/AST ASTContext.h TypeBase.h, clang/lib/AST ASTContext.cpp

[clang] Unique OverflowBehaviorTypes with a UniquingSet (NFC) (#223939)

This patch migrates OverflowBehaviorTypes in ASTContext from
llvm::FoldingSet to llvm::UniquingSet.

OverflowBehaviorType keys on a pair of QualType and
OverflowBehaviorKind.  Switching to UniquingSet allows us to look up
types with a typed key, eliminating FoldingSetNodeID serialization at
lookup sites and removing OverflowBehaviorType::Profile.

Assisted-by: Antigravity
DeltaFile
+2-8clang/include/clang/AST/TypeBase.h
+3-5clang/lib/AST/ASTContext.cpp
+1-1clang/include/clang/AST/ASTContext.h
+6-143 files

LLVM/project cccc94allvm/lib/Target/AMDGPU SIInstrInfo.cpp GCNSubtarget.h

[AMDGPU] BlockingCycle feature gated with ST.hasGFX1250VALUBlockingCycles().
DeltaFile
+4-0llvm/lib/Target/AMDGPU/GCNSubtarget.h
+1-1llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+5-12 files

FreeNAS/freenas b6538f8src/middlewared/middlewared/plugins/pool_ dataset_processes_utils.py dataset_processes.py, src/middlewared/middlewared/plugins/zfs property_choices.py resource.py

Move the dataset read-parity methods onto zfs.resource

## Context
`zfs.resource` is replacing `pool.dataset`, but the choices methods, `recommended_zvol_blocksize` and the processes family still lived only under `pool.dataset`, so retiring that namespace would have taken those capabilities with it. This re-homes them and leaves `pool.dataset` as one-line shims with their existing models and `DATASET_READ` roles, so nothing on the `pool.dataset` side changes shape.

## Solution
The pure parts - the checksum and compression vocabularies, the recordsize table and the zvol blocksize recommendation - now live in `plugins/zfs/property_choices.py` with no service or filesystem access, and `plugins/zfs/resource_info.py` supplies the sysfs read and the pool lookups around them. The relocated `pool.dataset.recordsize_choices` unit test moved with them and now exercises the pure function directly: it no longer has to patch `open` or instantiate a service to assert what record sizes a given `zfs_max_recordsize` allows, and it can cover the dRAID minimum as well.

The processes family moves wholesale, mountinfo scan included, so `processes`, `kill_processes` and `processes_using_paths` sit alongside the helpers that feed them and `pool_/dataset_processes_utils.py` disappears rather than becoming another shim. Lock state now comes from `zfs.resource.query_impl` with `get_crypto` instead of `pool.dataset.get_instance_quick`, and a resource that does not exist raises an `ENOENT` validation error against `zfs.resource.processes.id`; both places that catch this test the errno only.

The consequence worth knowing about is that `zfs.resource.processes` scans the dataset tree the way `pool.processes` already does, rather than stat-ing one configured mountpoint. So it reports holders on descendants as well as on the dataset itself, an unmounted filesystem no longer reports whatever is holding the filesystem mounted above it (a false-positive EBUSY that could make an export refuse), a volume is no longer probed under /mnt, and internal datasets are left out of the scan.
DeltaFile
+228-0src/middlewared/middlewared/plugins/zfs/resource_processes.py
+6-197src/middlewared/middlewared/plugins/pool_/dataset_processes.py
+121-0src/middlewared/middlewared/plugins/zfs/resource_processes_utils.py
+0-117src/middlewared/middlewared/plugins/pool_/dataset_processes_utils.py
+107-0src/middlewared/middlewared/plugins/zfs/resource.py
+90-0src/middlewared/middlewared/plugins/zfs/property_choices.py
+552-31411 files not shown
+780-45017 files

FreeNAS/freenas ed93f01src/middlewared/middlewared/api/v27_0_0 zfs_resource_crud.py, src/middlewared/middlewared/plugins/container migrate.py

Make zfs.resource rename and promote public, and fix pool.snapshot.rename

## Problem
`zfs.resource.rename` and `zfs.resource.promote` were private positional methods, so nothing outside middleware could rename or promote a ZFS resource through the new namespace. `pool.snapshot.rename` has been dead since the rename guard landed: it forwards to `zfs.resource.rename`, which rejects every path containing `@` and tells the caller to use the snapshot method instead, so the shim could never succeed.

## Solution
Both methods are now public, typed and single-object, held by `ZFS_RESOURCE_WRITE`, with the private entry points renamed `rename_impl` and `promote_impl`. `rename` requires `force: true` as the same acknowledgement `pool.dataset.rename` requires, and its `recursive` parameter is gone - a dataset rename can never be recursive, and the handler that reported that is unreachable once the parameter does not exist. The message moved to the `pool.dataset.rename` shim, which now rejects `recursive: true` itself with attribute `pool.dataset.rename.recursive`, so the caller-visible error is unchanged.

`pool.snapshot.rename` is re-pointed at `zfs.resource.snapshot.rename_impl`, which is where snapshot renames actually live. The shim keeps its own `force` and same-dataset checks and the implementation keeps rejecting protected paths. It now also passes `force_unmount=False` because the snapshot implementation hardcodes it, which is a no-op for snapshots.

The eight remaining internal callers - dataset promote and rename, the container rename and the three migration renames, and the container-name migration - move to the `_impl` entry points with a constructed model.
DeltaFile
+63-35src/middlewared/middlewared/plugins/zfs/resource.py
+96-1tests/api2/test_zfs_resource_rename.py
+62-0src/middlewared/middlewared/api/v27_0_0/zfs_resource_crud.py
+23-17src/middlewared/middlewared/plugins/zfs/resource_ops.py
+13-4src/middlewared/middlewared/plugins/container/migrate.py
+7-7src/middlewared/middlewared/plugins/pool_/dataset.py
+264-643 files not shown
+282-679 files

FreeNAS/freenas b27bea0src/middlewared/middlewared/api/v27_0_0 zfs_resource_crud.py, src/middlewared/middlewared/plugins/zfs resource.py resource_query.py

Make zfs.resource a CRUD service with a filterable query

## Problem
`zfs.resource` is meant to replace `pool.dataset`, but its public `query` took a single object, had no `id`, no `get_instance` and no filters, so consumers of `pool.dataset.query` had nowhere to go. Two long-standing bugs also sat in the same code: `properties: null` together with `get_source: true` crashed dereferencing `None`, and the path-overlap check never fired for `max_depth > 0` because `get_children` is flipped on after validation, so overlapping paths silently produced duplicate rows.

## Solution
`ZFSResourceService` is now a `CRUDService[ZFSResourceEntry]` with a `ZFS_RESOURCE` role prefix, a separate delete role and events registered but not sent (emission arrives with `do_update`). `create` became `do_create`, `destroy` gained a CRUD sibling `delete` over the same helper, and `get_instance` is overridden to forward only `extra`.

`query` now takes `(filters, options)` like every other query method, with the old object re-typed as `options.extra` and closed to unknown keys. The one deviation, spelled out at the top of the docstring, is that filters never widen what is walked: the traversal is whatever `extra` declares and filters are applied to what came back, so the cost of a query stays explicit on a large array. The exception is an identity filter on `id`/`name`, which opens exactly those paths non-recursively and is what makes `get_instance` work for any dataset rather than only a pool root; paths synthesised that way never unhide internal datasets, which is what the new private `allow_internal_paths` flag is for. Any ZFS property a filter or `select` refers to is fetched automatically, and a name that is not a ZFS property now fails with `EINVAL` rather than silently matching nothing.

`ZFSResourceEntry` gains `id`, plus `crypto`, `snapshot_count` and `snapshots` filled in on request, and loses `children` - results are always a flat list. A `from_previous` on the v27 args model carries 25.10.x and 26.0 clients, which keep sending one object and keep getting `children` back through `to_previous`.

Two pre-existing bugs ride along because the fix touches the same lines that had to change anyway: `normalize_asdict_result` no longer dereferences a null `properties` when normalising sources, and the overlap check now runs whenever the walk descends, `max_depth` included. `max_depth` also gained a lower bound of 0.

`PropertyValue` and friends moved to their own module so the snapshot models can import them without a cycle. The two internal callers of the public query moved to `query_impl`, and the test probes moved to the new call shape. The legacy API test's blanket `zfs.resource.*` skip became a per-method first-version map, so those clients are actually exercised now.
DeltaFile
+214-45tests/api2/test_zfs_resource_query.py
+207-11src/middlewared/middlewared/plugins/zfs/resource_query.py
+195-21src/middlewared/middlewared/api/v27_0_0/zfs_resource_crud.py
+112-28src/middlewared/middlewared/plugins/zfs/resource.py
+129-0src/middlewared/middlewared/pytest/unit/plugins/zfs/test_resource_query_filters.py
+43-0src/middlewared/middlewared/pytest/unit/api/test_zfs_resource_query_args.py
+900-10530 files not shown
+1,077-20736 files