NAS-142672 / 26.0.0-RC.1 / Remove ancient iSCSI tests (by bmeagherix) (#19552)
The same functionality has been replicated using libiscsi.
Original PR: https://github.com/truenas/middleware/pull/19550
Co-authored-by: Brian M <brian.meagher at ixsystems.com>
NAS-142672 / 25.10.7 / Remove ancient iSCSI tests (by bmeagherix) (#19551)
The same functionality has been replicated using libiscsi.
Original PR: https://github.com/truenas/middleware/pull/19550
Co-authored-by: bmeagherix <118192357+bmeagherix at users.noreply.github.com>
NAS-142672 / 27.0.0-BETA.1 / Remove ancient iSCSI tests (#19550)
The same functionality has been replicated using libiscsi.
(cherry picked from commit 33927a311672acefd5df411fac48a5e6b90c0d8c)
[RISCV] Optimize `(and (i1) f, (setcc a, b, eq))` to use the zicond extension (#217946)
This is a generalization of the previously existing rule, that required
one of the sides of the `setcc` to be zero.
With this commit we now support comparisons between any two variables.
This requires us to insert an additional instruction to compare the two.
But it is still beneficial vs the unoptimized lowering as it reduces 1
instruction in the output.
This fixes one of the issues identified in #179584. Namely `test_lt3`,
now uses `czero.{nez,eqz}` for those cases.
AI Disclosure: I have used AI to help me understand the LLVM build and
test system as well as to understand the existing codebase. The new code
add in this PR is authored by me.
NAS-142457 / 26.0.0-RC.1 / Fix TTL handling in cache.has_key and get_or_put (by Qubad786) (#19549)
## Problem
`cache.has_key` returned True whenever the TDB record existed and never
looked at the stored `timeout`, so it disagreed with `cache.get` — which
expires the entry and raises `KeyError` — for any key that had expired
but not yet been reaped. The only reaper is a 24h periodic with
`run_on_start=False` whose timer is re-armed from scratch on every
middlewared start, so on a box that restarts more often than daily it
never runs at all and the wrong answer sticks around indefinitely.
Separately, `get_or_put` always stored `now + timeout`, so unlike `put`
— where 0 means "never expires" — `get_or_put(key, 0, method)` stored an
expiry of now and the entry was already expired on the very next read.
## Solution
`has_key` now delegates to `get()` and maps `KeyError` to False.
Delegating rather than repeating the timeout comparison is deliberate:
the bug existed because two methods independently decided what "expired"
[11 lines not shown]
[AMDGPU] PromoteAlloca: split scalar accesses that span several elements
promoteAllocaToVector already splits a *vector* access across several
elements when it is a multiple of the element size, but a *scalar* access
had to be bitcastable to the element type, so an i64 load from an alloca
promoted to <8 x i32> was rejected as "not a supported access type" and
the object stayed in scratch.
Accept a scalar access that is a whole multiple of the element size and
route it through the existing subvector path, which already builds the
value from consecutive elements and bitcasts. Accesses with padding are
still rejected, since splitting those would put the pieces at the wrong
offsets, as are non-integer non-float types.
[AMDGPU] PromoteAlloca: flatten homogeneous structs to vectors
getVectorTypeForAlloca() peeled nested ArrayType and one inner
FixedVectorType, but stopped at any StructType. An alloca of an array of
structs was therefore rejected with "Cannot convert type to vector" and
fell back to scratch, even when the struct was a trivial wrapper around a
scalar.
Peel structs too, but only when every field has the same type and the
struct has no padding, so flattened elements keep the byte offsets the
surrounding index arithmetic assumes. Structs with differing field types
or with padding are left alone.
Simplify logic via suggestions from PR feedback. Add additional test cases, make tests a bit more complex so they don't fold into simple store of constant
[libc] Add self-define for sigev_notify_thread_id field. (#219067)
Support downstream code that assumes `sigev_notify_thread_id`, even
though defined for Linux is a macro that expands to use private `struct
sigevent` fields.
[flang][OpenMP] Remove OmpVerifyModifiers
Verification of clause modifiers is now done in a single place.
The OmpVerifyModifiers function was left in place, but was reduced
to always return "true".
Remove the definition and all calls to it.
The large amount of apparent changes is mostly due to unindenting
and reformatting previously indented code.
Add middleware support for LIO ALUA HA
Wire up the middleware side of LIO ALUA high-availability: load
lio_ha.ko with per-node addresses on service start, manage ALUA
state across failover events, clean up STANDBY configfs on pool
export, and add pre-flight validation that targets have static
initiator ACLs before ALUA can be enabled.
For each target, create a portal-less phantom TPG carrying the peer
node's controller group so that a single RTPG response from any
connected port lists both ALUA groups. Write tpgt_N/rtpi explicitly
before enable so that relative target port IDs in RTPG match the
tag formula (portal.tag on Node A, portal.tag + 32000 on Node B)
rather than being auto-assigned sequentially by the kernel.
ALUA group states are driven by role and ha_state:
MASTER + synced local=OPTIMIZED remote=NONOPTIMIZED
MASTER + connected local=OPTIMIZED remote=TRANSITIONING
[4 lines not shown]
poudriered: retain queue while listing it
The list operation passes the global queue to send_object(), which
consumes its argument. A subsequent list request can then release the
stale queue again and terminate the daemon.
Take a temporary queue reference for the response so the global queue
remains valid.
(cherry picked from commit dbabedc99030f7d13696a8dd4382c4756c31fb9d)
[libc] Add stubs for tzset, tzname, timezone, and daylight. (#218979)
The variables are placed together in one entrypoint, as they will be
modified together by `tzset()` (and also `ctime()`, `localtime()`, and
`mktime()`).
For `tzname`, this PR updates hdrgen to handle array types for objects.
Assisted-by: Automated tooling, human reviewed.
Firewall: Rules: separate modern and legacy normalization pipelines
Emit match-based normalization after translation and before all filter rules so quick rules cannot bypass it. Keep the complete legacy scrub pipeline active while legacy rules exist, since legacy no-scrub cannot undo modern match actions and disables set reassemble semantics.
Stage imported match rules until legacy cleanup is complete, flag selective fragment reassembly for manual review, and clarify the remaining global normalization behavior in advanced settings.
[mlir][tosa] Add MXFP TRANSPOSE validation data (#218711)
These data type combinations were added in
https://github.com/arm/tosa-specification/pull/74
---------
Signed-off-by: Ian Tayler Lessa <ian.taylerlessa at arm.com>