diff options
author | Dominique Martinet <dominique.martinet@cea.fr> | 2020-07-14 16:44:41 +0200 |
---|---|---|
committer | Dominique Martinet <dominique.martinet@cea.fr> | 2020-07-14 17:01:13 +0200 |
commit | 7461a95f67796b1dcb0b3abec154ed149782dae6 (patch) | |
tree | 806793563d721c48be01d36611a79b74d45cb5cc | |
parent | f9afbcd7d52d2cf31791aa1527039349b137f6e3 (diff) |
disks: use qemu fdset instead of letting qemu open device directly
-rwxr-xr-x | kvm-wrapper.sh | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/kvm-wrapper.sh b/kvm-wrapper.sh index 5028921..da37baf 100755 --- a/kvm-wrapper.sh +++ b/kvm-wrapper.sh @@ -773,7 +773,14 @@ function kvm_start_vm_prep () KVM_DISK_IF[0]=${KVM_DISK_IF[0]-$KVM_DRIVE_IF} for i in ${!KVM_DISK[@]}; do - KVM_EXEC_CMD+=( -drive "if=none,id=disk${i},file=${KVM_DISK[i]}${KVM_DISK_OPT[i]-${KVM_DISK_OPT[@]:0:1}}" -device "${KVM_DISK_IF[i]:-${KVM_DISK_IF[@]:0:1}},drive=disk${i}" ) + local DISKFD DISKFD_RO + # seems to be a bug, we need to add the file twice (ro mode as well) apparently + # because format probe needs ro mode even if we force format=raw,media=disk... + exec {DISKFD}<>"${KVM_DISK[i]}" + exec {DISKFD_RO}<"${KVM_DISK[i]}" + KVM_EXEC_CMD+=( -add-fd "fd=${DISKFD},set=${DISKFD},opaque=rdwr:${KVM_DISK[0]}" ) + KVM_EXEC_CMD+=( -add-fd "fd=${DISKFD_RO},set=${DISKFD},opaque=ro:${KVM_DISK[0]}" ) + KVM_EXEC_CMD+=( -drive "if=none,id=disk${i},file=/dev/fdset/${DISKFD}${KVM_DISK_OPT[i]-${KVM_DISK_OPT[@]:0:1}}" -device "${KVM_DISK_IF[i]:-${KVM_DISK_IF[@]:0:1}},drive=disk${i}" ) done [[ -n "$KVM_CDROM" ]] && KVM_EXEC_CMD+=( -cdrom "$KVM_CDROM" ) |