mirror of
https://github.com/cozystack/cozystack.git
synced 2026-11-09 05:25:14 +09:00
## What this PR does Bumps `linstor-csi` from v1.10.5 to v1.10.6 and ships an out-of-tree patch that fixes live migration of KubeVirt VMs whose volumes sit on a DRBD Protocol-A/B resource (e.g. a `replicated-async` StorageClass). ### Problem DRBD requires Protocol C whenever `allow-two-primaries=yes` is enabled. Operators commonly opt into Protocol A on a per-resource-group basis for async / WAN replication, which silently breaks every subsequent live migration of consumers of those volumes: `drbdadm adjust` rejects the second-attach with `Protocol C required` (errno 139), KubeVirt's evacuation loop retries indefinitely, and the VM stays pinned to the source node. ### Change - `LINSTOR_CSI_VERSION` 1.10.5 → 1.10.6 (Makefile + Dockerfile default). - New patch `002-protocol-c-override-for-dual-attach.diff`: when `Attach` installs `allow-two-primaries=yes` on the resource-definition during a second attach, it also installs `DrbdOptions/Net/protocol=C` as an override on the resource-definition. The override applies to every connection (including diskless TieBreaker peers, where a per-pair override would still leave one connection broken). It is tagged with `Aux/csi-protocol-override=yes` so `Detach` removes only the override this driver installed, leaving any operator-set `Protocol` property on the resource-definition untouched. - Existing patch `001-relocate-after-clone-restore.diff` regenerated against v1.10.6 (context shift only, no logic change — the old patch hunks no longer aligned cleanly). ### Verification - `make image-linstor-csi` builds successfully on linux/amd64 with both patches applied. - End-to-end test on dev5 cluster (KubeVirt v1.6.3, 3-node Talos): created a Protocol-A resource-group + StorageClass, provisioned a VM on top, and triggered live migration. Migration succeeds in a single Attach with the override installed during dual-attach and removed by Detach. Reproducer (without the patch) is the well-known evacuation loop with `(node) Failed to adjust DRBD resource ... Protocol C required`. ### Upstream Upstreamed as draft PR piraeusdatastore/linstor-csi#435. ### Compatibility - No behaviour change for resources already using Protocol C (the common case). - No behaviour change for resources never attached with allow-two-primaries. - Idempotent: re-running `Attach` is a no-op once the override is installed. - Operator-set Protocol overrides on the resource-definition are preserved (gated by the Aux marker). ### Release note ```release-note fix(linstor): live migration of KubeVirt VMs on Protocol-A/B (async) DRBD volumes no longer fails with "Protocol C required" — linstor-csi now installs a Protocol=C override on the resource-definition during dual-attach and reverts it on detach. ``` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Automatic replica relocation after volume clone and snapshot restore to improve placement and load distribution. * Conditional DRBD protocol override to enable/clean up dual-attach (two-primaries) scenarios more reliably. * **Chores** * Updated LINSTOR CSI default to v1.10.6. <!-- end of auto-generated comment: release notes by coderabbit.ai -->