forked from rook/rook
When the OSD activate init container cannot match its configured device, it falls back to a bare 'ceph-volume raw list', which enumerates every block device on the node and opens each one to read bluestore labels. Opening a krbd device whose backing cluster is unhealthy can block in uninterruptible sleep; when that device's I/O depends on the OSD being activated, activation deadlocks. Build the fallback scan list explicitly with lsblk and exclude the network-backed device types that can hang when their backing storage is unavailable (rbd, nbd, drbd) along with zram (volatile RAM). Rook never provisions OSDs on any of these, so the fallback can never legitimately need to find an OSD on them. loop devices are kept, since OSDs on loop devices are supported for CI and local testing. Fail fast if the filtered list is empty rather than degenerating back to a full scan. Note this hardens only the rename-fallback path. The deadlock observed in CI (kernel hung tasks under 'ceph-volume raw activate' opening a stalled /dev/rbd0; actions runs 27325963851, 27333888237, and 27378983111, which reproduced it on this PR's own head) ultimately originates inside ceph-volume: 'raw activate' runs an unconditional LUKS2/TPM2 discovery sweep over all block devices even when given an explicit --device. That requires a ceph-volume fix; this change makes the Rook-controlled scan safe regardless of ceph version. Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>