Skip to content

[drbd] Split legacy and patched DRBD stacks#724

Draft
IvanOgurchenok wants to merge 6 commits into
mainfrom
fix/drbd-utils-legacy-and-drbd-version-check
Draft

[drbd] Split legacy and patched DRBD stacks#724
IvanOgurchenok wants to merge 6 commits into
mainfrom
fix/drbd-utils-legacy-and-drbd-version-check

Conversation

@IvanOgurchenok

@IvanOgurchenok IvanOgurchenok commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Description

This PR separates the DRBD stack used by the legacy LINSTOR control plane from the stack used by the new control plane.

The legacy LINSTOR path now uses vanilla DRBD 9.2.18 and drbd-utils 9.30.0. The new control-plane path continues to use the flant-patched DRBD 9.2.18 and drbd-utils 9.32.0 stack.

The DRBD install NodeGroupConfiguration also selects the desired DRBD version and module image according to internal.newControlPlane, and handles empty, non-DRBD-9, or malformed loaded versions without failing the bashible run.

The final drbdReactor and drbdReactorLegacy images now remove /opt/svace, which is build-only static analysis tooling inherited from the builder base and is not needed at runtime.

Why do we need it, and what problem does it solve?

The legacy LINSTOR control plane is more sensitive to newer drbd-utils behavior and should stay on the vanilla DRBD userspace/kernel pair. At the same time, the new control plane requires the flant-patched DRBD stack.

Keeping these paths separate avoids mixing incompatible kernel/userspace ABI variants and reduces the risk of breaking legacy LINSTOR while still allowing the new control plane to use patched DRBD features.

The bashible version-check fix prevents DRBD installation from failing when /proc/drbd contains an empty, old, or malformed loaded module version.

Removing /opt/svace keeps unnecessary build tooling out of the final reactor runtime filesystem. The image still inherits the same builder base, so this is a conservative cleanup rather than a full image-layer optimization.

What is the expected result?

When internal.newControlPlane is false, the module should render and install the legacy DRBD stack:

  • drbdLegacy image for DRBD kernel module installation;
  • drbdReactorLegacy image for the legacy LINSTOR node sidecar;
  • vanilla DRBD 9.2.18 and drbd-utils 9.30.0.

When internal.newControlPlane is true, the module should continue to render and install the patched DRBD stack:

  • drbd image for DRBD kernel module installation;
  • drbdReactor image for the new control-plane sidecar;
  • flant-patched DRBD 9.2.18 and drbd-utils 9.32.0.

If the currently loaded DRBD version is empty, not a DRBD 9.x semver, or lower than the desired version, bashible should request a rebuild/reboot path instead of failing on d8-semver compare.

The final drbdReactor and drbdReactorLegacy runtime filesystems should not contain /opt/svace.

Checklist

  • The code is covered by unit tests.
  • e2e tests passed.
  • Documentation updated according to the changes.
  • Changes were tested in the Kubernetes cluster manually.

Keep the legacy LINSTOR path on vanilla DRBD 9.2.18 and drbd-utils 9.30.0 while the new control-plane continues to use the flant-patched stack.

Add separate legacy DRBD and drbd-reactor images, route legacy consumers to them, and harden bashible DRBD version checks against empty or non-9.x loaded versions.

Signed-off-by: Ivan Ogurchenok <ivan.ogurchenok@flant.com>
Keep the legacy drbd-reactor build layout aligned with the existing image pattern by resolving patches through ImageName.

Signed-off-by: Ivan Ogurchenok <ivan.ogurchenok@flant.com>
Let SPAAS generate compatibility patches for both the patched DRBD stack and the vanilla legacy DRBD stack.

Signed-off-by: Ivan Ogurchenok <ivan.ogurchenok@flant.com>
Treat malformed loaded DRBD 9.x versions as rebuild/reboot candidates before calling d8-semver, and remove inherited SVACE tooling from final reactor runtime filesystems.

Signed-off-by: Ivan Ogurchenok <ivan.ogurchenok@flant.com>
Keep the patched new-control-plane DRBD stack on 9.2.18-flant.5 and move only the LINSTOR legacy kernel module slot to vanilla 9.2.16.

Signed-off-by: Ivan Ogurchenok <ivan.ogurchenok@flant.com>
Define the DRBD version regex once and reuse it across all node-specific installation scripts.

Signed-off-by: Ivan Ogurchenok <ivan.ogurchenok@flant.com>
@IvanOgurchenok IvanOgurchenok force-pushed the fix/drbd-utils-legacy-and-drbd-version-check branch from 2b13cc7 to 2b5d94c Compare July 14, 2026 00:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant