* Migration of Virtual Machine with direct lun disks from RHV environment to OpenShift Virtualization with MTV operator fails.

Solution In Progress - Updated -

Environment

  • OpenShift Virtualization 4.15
  • Migration Toolkit for Virtualization (MTV) 2.6.1
  • Red Hat Virtualization Manager (RHV-M) - 4.5.3

Issue

  • Migration of Virtual Machine with direct lun disks from RHV environment to OpenShift Virtualization with MTV operator fails.

Resolution

Root Cause

Diagnostic Steps

  • Logs from the forklift-controller pod
$ oc logs forklift-controller-68768465b-vdbbf -n openshift-mtv -f

{"level":"info","ts":"2024-05-14 21:31:38.565","logger":"plan|zb6cn","msg":"could not find a local instance type preference for destination VM. trying cluster wide","plan":{"name":"direct-lun-vm","namespace":"openshift-mtv"},"migration":"openshift-mtv/direct-lun-vm-x2wbg","vm":" id:4cf00494-46da-41e9-9710-042fc046815c name:'rhel-86' "}
{"level":"info","ts":"2024-05-14 21:31:38.640","logger":"plan|zb6cn","msg":"Reconcile ended.","plan":{"name":"direct-lun-vm","namespace":"openshift-mtv"},"reQ":0}
{"level":"info","ts":"2024-05-14 21:31:38.640","msg":"Observed a panic in reconciler: runtime error: invalid memory address or nil pointer dereference","controller":"plan","object":{"name":"direct-lun-vm","namespace":"openshift-mtv"},"namespace":"openshift-mtv","name":"direct-lun-vm","reconcileID":"872a1be8-4075-465b-b425-b3b522426060"}
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
    panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x2791c1a]

goroutine 238 [running]:
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile.func1()
    /remote-source/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:116 +0x1fa
panic({0x2d8c4a0, 0x50924b0})
    /usr/lib/golang/src/runtime/panic.go:884 +0x213
github.com/konveyor/forklift-controller/pkg/controller/plan/adapter/ovirt.(*Builder).mapDisks(0xc0019482f0?, 0xc003484d80, {0xc000015148, 0x1, 0x0?}, 0xc001b44108)
    /remote-source/app/pkg/controller/plan/adapter/ovirt/builder.go:452 +0x25a
github.com/konveyor/forklift-controller/pkg/controller/plan/adapter/ovirt.(*Builder).VirtualMachine(0xc0019482f0, {{0xc000ce2720, 0x24}, {0xc001516d70, 0xf}, {0x0, 0x0}, {0x0, 0x0}}, 0xc001b44108, ...)
    /remote-source/app/pkg/controller/plan/adapter/ovirt/builder.go:269 +0x189
github.com/konveyor/forklift-controller/pkg/controller/plan.(*KubeVirt).virtualMachine(0xc000472558, 0xc0019b4c00)
    /remote-source/app/pkg/controller/plan/kubevirt.go:1259 +0xad7
github.com/konveyor/forklift-controller/pkg/controller/plan.(*KubeVirt).EnsureVM(0xc000472558, 0xc0019b4c00)
    /remote-source/app/pkg/controller/plan/kubevirt.go:385 +0x3a5
github.com/konveyor/forklift-controller/pkg/controller/plan.(*Migration).execute(0xc000472540, 0xc0019b4c00)
    /remote-source/app/pkg/controller/plan/migration.go:823 +0x14025
github.com/konveyor/forklift-controller/pkg/controller/plan.(*Migration).Run(0xc000472540)
    /remote-source/app/pkg/controller/plan/migration.go:193 +0x2ab
github.com/konveyor/forklift-controller/pkg/controller/plan.(*Reconciler).execute(0xc00195e810, 0xc000681c00)
    /remote-source/app/pkg/controller/plan/controller.go:427 +0xa1c
github.com/konveyor/forklift-controller/pkg/controller/plan.Reconciler.Reconcile({{{0x37d8a00, 0xc000627e00}, {0x37e8da0, 0xc000188c60}, {0x37e0350, 0xc000704e00}}}, {0xc00157f440?, 0xc0014adce8?}, {{{0xc001918320, 0xd}, ...}})
    /remote-source/app/pkg/controller/plan/controller.go:256 +0xa10
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile(0x37ddc80?, {0x37da910?, 0xc00195e7e0?}, {{{0xc001918320?, 0xb?}, {0xc001918310?, 0x0?}}})
    /remote-source/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:119 +0xc8
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler(0xc0008ae5a0, {0x37da868, 0xc0004929b0}, {0x2fbe2a0?, 0xc0014d08e0?})
    /remote-source/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:316 +0x3ca
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem(0xc0008ae5a0, {0x37da868, 0xc0004929b0})
    /remote-source/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:266 +0x1d9
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2()
    /remote-source/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:227 +0x85
created by sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2
    /remote-source/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:223 +0x587

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments