What happened:
Trying the usual import of a qcow2 image into a block device DV that worked in 1.64, now fails.
What you expected to happen:
Import the image and start the virtual machine.
How to reproduce it (as minimally and precisely as possible):
Create a virtual machine template or just DV with similar specs:
apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
name: somevm-root
spec:
preallocation: false
source:
http:
url: https://some.web.tld/somevm.qcow2
storage:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 60Gi
storageClassName: aff-a-nvme-flexvol
volumeMode: Block
where 'aff-a-nvme-flexvol' is NetApp Trident nvme provisioned storage class.
Additional context:
Had to change scratch storage configuration to:
scratchSpaceStorageClass: aff-a-nfs-flexvol
filesystemOverhead:
storageClass:
aff-a-nfs-flexvol: "0.15"
or importer would fail with either not enough space or permission denied if block storage scratch was used. The 'aff-a-nfs-flexvol' storage class is similar NetApp Trident pnfs4.1 provisioned storage class.
Environment:
- CDI version (use
kubectl get deployments cdi-deployment -o yaml): 1.65
- Kubernetes version (use
kubectl version): 1.35.5
- DV specification: posted above
- Cloud provider or hardware configuration: Dell R6615 with AMD EPYC 9334
- OS (e.g. from /etc/os-release): Debian 13.5
- Kernel (e.g.
uname -a): 7.0.10+deb13-amd64
- Install tools: ?
- Others: ?
importer-prime logs
I0617 12:15:08.550549 1 prometheus.go:78] 99.87
I0617 12:15:08.972676 1 file.go:195] Read 6710820864 bytes, wrote 6701330432 bytes to /scratch/tmpimage
I0617 12:15:08.972915 1 data-processor.go:260] New phase: Convert
I0617 12:15:08.972922 1 data-processor.go:266] Validating image
E0617 12:15:08.979122 1 prlimit.go:156] failed to kill the process; os: process already finished
I0617 12:15:08.979174 1 qemu.go:119] Running qemu-img with args: [convert -t writeback -p -O raw /scratch/tmpimage /dev/cdi-block-volume]
I0617 12:15:08.981911 1 qemu.go:283] 0.00
E0617 12:15:08.983110 1 prlimit.go:178] qemu-img failed output is:
E0617 12:15:08.983117 1 prlimit.go:179] (0.00/100%)
E0617 12:15:08.983121 1 prlimit.go:180] qemu-img: /dev/cdi-block-volume: error while converting raw: Failed to clear the new image's first sector: Invalid argument
E0617 12:15:08.983136 1 prlimit.go:156] failed to kill the process; os: process already finished
E0617 12:15:08.983199 1 data-processor.go:256] exit status 1
qemu-img execution failed
kubevirt.io/containerized-data-importer/pkg/system.executeWithLimits
pkg/system/prlimit.go:182
kubevirt.io/containerized-data-importer/pkg/system.ExecWithLimits
pkg/system/prlimit.go:112
kubevirt.io/containerized-data-importer/pkg/image.convertToRaw
pkg/image/qemu.go:120
kubevirt.io/containerized-data-importer/pkg/image.(*qemuOperations).ConvertToRawStream
pkg/image/qemu.go:169
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).convert
pkg/importer/data-processor.go:285
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).initDefaultPhases.func7
pkg/importer/data-processor.go:218
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessDataWithPause
pkg/importer/data-processor.go:253
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessData
pkg/importer/data-processor.go:151
main.handleImport
cmd/cdi-importer/importer.go:189
main.main
cmd/cdi-importer/importer.go:149
runtime.main
GOROOT/src/runtime/proc.go:283
runtime.goexit
src/runtime/asm_amd64.s:1700
could not convert image to raw Log line from nbdkit: nbdkit: curl[1]: error: readahead: warning: underlying plugin does not support NBD_CMD_CACHE or PARALLEL thread model, so the filter won't do anythingLog line from nbdkit: nbdkit: curl[2]: error: readahead: warning: underlying plugin does not support NBD_CMD_CACHE or PARALLEL thread model, so the filter won't do anything
kubevirt.io/containerized-data-importer/pkg/image.convertToRaw
pkg/image/qemu.go:128
kubevirt.io/containerized-data-importer/pkg/image.(*qemuOperations).ConvertToRawStream
pkg/image/qemu.go:169
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).convert
pkg/importer/data-processor.go:285
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).initDefaultPhases.func7
pkg/importer/data-processor.go:218
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessDataWithPause
pkg/importer/data-processor.go:253
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessData
pkg/importer/data-processor.go:151
main.handleImport
cmd/cdi-importer/importer.go:189
main.main
cmd/cdi-importer/importer.go:149
runtime.main
GOROOT/src/runtime/proc.go:283
runtime.goexit
src/runtime/asm_amd64.s:1700
Conversion to Raw failed
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).convert
pkg/importer/data-processor.go:287
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).initDefaultPhases.func7
pkg/importer/data-processor.go:218
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessDataWithPause
pkg/importer/data-processor.go:253
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessData
pkg/importer/data-processor.go:151
main.handleImport
cmd/cdi-importer/importer.go:189
main.main
cmd/cdi-importer/importer.go:149
runtime.main
GOROOT/src/runtime/proc.go:283
runtime.goexit
src/runtime/asm_amd64.s:1700
Unable to convert source data to target format
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).initDefaultPhases.func7
pkg/importer/data-processor.go:220
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessDataWithPause
pkg/importer/data-processor.go:253
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessData
pkg/importer/data-processor.go:151
main.handleImport
cmd/cdi-importer/importer.go:189
main.main
cmd/cdi-importer/importer.go:149
runtime.main
GOROOT/src/runtime/proc.go:283
runtime.goexit
src/runtime/asm_amd64.s:1700
E0617 12:15:08.983274 1 importer.go:194] exit status 1
qemu-img execution failed
kubevirt.io/containerized-data-importer/pkg/system.executeWithLimits
pkg/system/prlimit.go:182
kubevirt.io/containerized-data-importer/pkg/system.ExecWithLimits
pkg/system/prlimit.go:112
kubevirt.io/containerized-data-importer/pkg/image.convertToRaw
pkg/image/qemu.go:120
kubevirt.io/containerized-data-importer/pkg/image.(*qemuOperations).ConvertToRawStream
pkg/image/qemu.go:169
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).convert
pkg/importer/data-processor.go:285
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).initDefaultPhases.func7
pkg/importer/data-processor.go:218
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessDataWithPause
pkg/importer/data-processor.go:253
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessData
pkg/importer/data-processor.go:151
main.handleImport
cmd/cdi-importer/importer.go:189
main.main
cmd/cdi-importer/importer.go:149
runtime.main
GOROOT/src/runtime/proc.go:283
runtime.goexit
src/runtime/asm_amd64.s:1700
could not convert image to raw Log line from nbdkit: nbdkit: curl[1]: error: readahead: warning: underlying plugin does not support NBD_CMD_CACHE or PARALLEL thread model, so the filter won't do anythingLog line from nbdkit: nbdkit: curl[2]: error: readahead: warning: underlying plugin does not support NBD_CMD_CACHE or PARALLEL thread model, so the filter won't do anything
kubevirt.io/containerized-data-importer/pkg/image.convertToRaw
pkg/image/qemu.go:128
kubevirt.io/containerized-data-importer/pkg/image.(*qemuOperations).ConvertToRawStream
pkg/image/qemu.go:169
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).convert
pkg/importer/data-processor.go:285
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).initDefaultPhases.func7
pkg/importer/data-processor.go:218
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessDataWithPause
pkg/importer/data-processor.go:253
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessData
pkg/importer/data-processor.go:151
main.handleImport
cmd/cdi-importer/importer.go:189
main.main
cmd/cdi-importer/importer.go:149
runtime.main
GOROOT/src/runtime/proc.go:283
runtime.goexit
src/runtime/asm_amd64.s:1700
Conversion to Raw failed
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).convert
pkg/importer/data-processor.go:287
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).initDefaultPhases.func7
pkg/importer/data-processor.go:218
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessDataWithPause
pkg/importer/data-processor.go:253
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessData
pkg/importer/data-processor.go:151
main.handleImport
cmd/cdi-importer/importer.go:189
main.main
cmd/cdi-importer/importer.go:149
runtime.main
GOROOT/src/runtime/proc.go:283
runtime.goexit
src/runtime/asm_amd64.s:1700
Unable to convert source data to target format
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).initDefaultPhases.func7
pkg/importer/data-processor.go:220
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessDataWithPause
pkg/importer/data-processor.go:253
kubevirt.io/containerized-data-importer/pkg/importer.(*DataProcessor).ProcessData
pkg/importer/data-processor.go:151
main.handleImport
cmd/cdi-importer/importer.go:189
main.main
cmd/cdi-importer/importer.go:149
runtime.main
GOROOT/src/runtime/proc.go:283
runtime.goexit
src/runtime/asm_amd64.s:1700
What happened:
Trying the usual import of a qcow2 image into a block device DV that worked in 1.64, now fails.
What you expected to happen:
Import the image and start the virtual machine.
How to reproduce it (as minimally and precisely as possible):
Create a virtual machine template or just DV with similar specs:
where 'aff-a-nvme-flexvol' is NetApp Trident nvme provisioned storage class.
Additional context:
Had to change scratch storage configuration to:
or importer would fail with either not enough space or permission denied if block storage scratch was used. The 'aff-a-nfs-flexvol' storage class is similar NetApp Trident pnfs4.1 provisioned storage class.
Environment:
kubectl get deployments cdi-deployment -o yaml): 1.65kubectl version): 1.35.5uname -a): 7.0.10+deb13-amd64importer-prime logs