Skip to content

ASSERTION i>= 0 FAILED in put_ldev #137

Description

@TomyLobo

Summary

During a LINSTOR disk migration using linstor resource toggle-disk --migrate-from, DRBD emits a sustained flood of put_ldev assertions:

drbd pm-<randomhex>/0 drbd<id>: ASSERTION i >= 0 FAILED in put_ldev

The assertion storm occurs while the migration transfer is in progress and drops sharply when the transfer completes.

Environment

DRBD module: 9.3.2
LINSTOR controller: 1.33.3-1
LINSTOR satellite: 1.33.3-1
drbd-utils: 9.34.3-1
Kernel: 7.0.6-2-pve
Distribution: Proxmox Virtual Environment 9.2.0, based on Debian 13 trixie, recently updated from 8.4, based on Debian 12 bookworm
Transport: tcp, I think

Trigger

The issue occurs during:

linstor resource toggle-disk \
  --storage-pool "$target_storage_pool" \
  --migrate-from "$migration_source" \
  "$diskless_target_node" \
  "$resource"

The goal is to move the secondary replica to another node that is initially diskless.

Observed behavior

During the migration/transfer, the kernel log is flooded with assertions like:

[Mon Jun 29 16:33:07 2026] drbd pm-<randomhex>/0 drbd<id>: ASSERTION i >= 0 FAILED in put_ldev

The observed rate is approximately:

10,000-20,000 assertion messages per second, sustained

The spam dropped sharply when the transfer concluded, from thousands of messages per second to dozens per second.

This made kernel logging effectively unusable during the event. On the affected node, journalctl retained only about 7 minutes of history because the assertion flood displaced older kernel logs.

Expected behavior

A normal LINSTOR disk migration should not trigger repeated put_ldev assertions.

If this assertion can be hit repeatedly in a hot path, it should at least be rate-limited so that it does not flood the kernel log and obscure diagnostic context.

Impact

- 10k-20k kernel log messages per second
- rapid eviction of useful journal history, making it impossible to diagnose other issues should they occur

Correlation with migration

The issue appears tightly correlated with the active transfer window:

- starts during `linstor resource toggle-disk --storage-pool "$target_storage_pool" --migrate-from "$migration_source" "$diskless_target_node" "$resource"`
- continues at very high rate while transfer is active
- drops sharply when the transfer completes

Changelog check

No obvious matching fix was found in the changelog of the upcoming RC (9.3.3-rc.1). The listed fixes include several teardown/resync/connection-related fixes, but none explicitly mention put_ldev, local-device refcounting, or unbalanced local-device references, so I'm not sure if upgrading to the RC would fix those issues.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions