github LINBIT/linstor-server v1.35.3

7 hours ago

Hi!

This is a bigger bug fix release for the 1.35 branch, with a few
important fixes.

Since 1.34.0 snapshots and clones also suspended I/O on a LUKS layer
below DRBD. With DRBD 9.3 or later this could stall snapshots and
clones until DRBD's ko-count was reached, if the Primary replicates to
a diskful LUKS replica on another node. Now only the topmost layer
(and WRITECACHE/CACHE layers below it) is suspended again.

Kubernetes (CRD) setups upgrading from 1.33.x or older could end up
with a crash-looping controller, because the SpaceTracking service
died on stale "SpaceHistory" entries. A migration now removes them.

Storage pools with LVM PVs on partitions no longer end up in a
never-ending update loop causing high CPU load and constant
DeviceManager cycles.

We also fixed a couple of race conditions: resource deletion vs. a
concurrent restore or un-delete (satellites shut down with a UUID
mismatch), the BalanceResourcesTask recreating a resource the user
just deleted, and "Access to deleted Node" after a node deletion.

Prometheus users get two new metrics, linstor_node_flag and
linstor_resource_flag. linstor_resource_state now carries a "resource"
label to join it with the linstor_volume_* metrics, and volumes
without DRBD are now reported as Created instead of DUnknown.

DrbdOptions/auto-diskful can now also be set on nodes and resources,
and a value of -1 disables it.

[1.35.3] - 2026-10-21

Added

  • Prometheus: New metric linstor_node_flag exports the node flags
    DELETE, EVICTED and EVACUATE as 0/1 per node
  • Prometheus: New metric linstor_resource_flag exports the resource
    flags INACTIVE and EVICTED as 0/1
  • Controller: A controller-only node now reports the platform and OS
    variant of the host the controller runs on

Changed

  • DrbdOptions/auto-diskful can also be set on nodes and resources,
    and -1 disables it
  • Satellite: drbd-reactor is reloaded after one of its snippets is
    written, changed or deleted as an external file, so the
    drbd-reactor-reload.path unit is no longer needed for that
  • Satellite: The ErrorReport of a drbdadm adjust that fails after a
    .res file was regenerated now includes the regenerated content, which
    is otherwise lost when the previous file is restored from its backup
  • SOS report now includes the LVM devices file
    /etc/lvm/devices/system.devices
  • Prometheus: linstor_resource_state also carries the resource name
    as resource label, allowing joins with the linstor_volume_*
    metrics
  • linstor-database export-db refuses to export a database with
    pending migrations unless --migrate-before-export is given, instead
    of producing a mislabeled or failing export

Fixed

  • Externally locked shared storage pools: after moving a resource, its
    LV is locked exclusively again instead of shared, as inactive copies
    no longer count as users of the LV
  • Web UI: Requests no longer hang for about 30 seconds after the
    controller served a large web UI file again
  • Prometheus: linstor_volume_state reports volumes without DRBD as
    Created (2) instead of DUnknown (-1) (GitHub #420)
  • RPM: Start scripts now use the distribution's JVM directory, fixing
    startup on SLES/openSUSE 16
  • Satellite: Fixed a never-ending storage pool update loop (high CPU,
    constant DeviceManager cycles) when LVM PVs are partitions; block size
    and discard granularity of partition PVs are now read from their disk
  • Resource group create/modify and resource definition modify now
    reject invalid layer stacks instead of failing later when a resource
    definition is spawned or a resource is created
  • Fixed a race between a resource deletion and a concurrent restore or
    un-delete of the same resource, which made the affected satellites
    shut down (and restart) with a UUID mismatch
  • Satellite: Fixed .res file's 'disk' (drbd-peer-options) section not
    including controller properties when a resource-connection exists. Now
    node-connection and controller properties are also included.
  • Fixed rare race condition where after deleting a node the same node
    could cause "Access to deleted Node"
  • Fixed ConcurrentModificationException when serializing
    SatelliteVolumeState for /metrics and listing resources or volumes
  • Fixed "Storage pool '...' on node '...' not found" error when
    satellite tries to update props right after a storage pool was
    deleted. Instead of an ErrorReport only a warning is logged now
  • Token authentication: A token's IP filter now matches IPv6 clients
    in any notation; before, satellite tokens were always rejected on IPv6
    clusters
  • Satellite: Node-connection paths are no longer lost on reconnect if
    the satellite shares no resource with the other node, which made new
    resources fall back to the default interfaces
  • REST: Resource groups now also list their diskless storage pools and
    node list (storage_pool_diskless_list, node_name_list), which
    could be set but were never returned
  • Fixed rare race condition between BalanceResourcesTask and a user
    deleting a resource. The result was that a resource deleted by the
    user might have been recreated by the BalanceResourcesTask.
  • Controller (K8s CRD): Fixed the SpaceTracking service dying with
    "Resource SpaceHistory/... not found" and the controller crash-looping
    after an upgrade from 1.33.x or older; a migration removes the stale
    entries
  • Controller: Snapshots and clones only flag the topmost layer and
    WRITECACHE/CACHE layers below it for suspend-IO. Since 1.34.0 a LUKS
    layer below DRBD was suspended too, which with DRBD 9.3 or later
    stalled snapshots and clones until DRBD's ko-count when the Primary
    replicates to a diskful LUKS replica on another node

Don't miss a new linstor-server release

NewReleases is sending notifications on new releases.