mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-04-29 12:14:48 +00:00
qemu: add block device readonly support
So that we can attach it readonly. Signed-off-by: Peng Tao <bergwolf@hyper.sh>
This commit is contained in:
parent
37b0d9c12f
commit
3700c55dd7
@ -971,6 +971,9 @@ type BlockDevice struct {
|
|||||||
// ShareRW enables multiple qemu instances to share the File
|
// ShareRW enables multiple qemu instances to share the File
|
||||||
ShareRW bool
|
ShareRW bool
|
||||||
|
|
||||||
|
// ReadOnly sets the block device in readonly mode
|
||||||
|
ReadOnly bool
|
||||||
|
|
||||||
// Transport is the virtio transport for this device.
|
// Transport is the virtio transport for this device.
|
||||||
Transport VirtioTransport
|
Transport VirtioTransport
|
||||||
}
|
}
|
||||||
@ -1029,6 +1032,10 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string {
|
|||||||
blkParams = append(blkParams, fmt.Sprintf(",format=%s", blkdev.Format))
|
blkParams = append(blkParams, fmt.Sprintf(",format=%s", blkdev.Format))
|
||||||
blkParams = append(blkParams, fmt.Sprintf(",if=%s", blkdev.Interface))
|
blkParams = append(blkParams, fmt.Sprintf(",if=%s", blkdev.Interface))
|
||||||
|
|
||||||
|
if blkdev.ReadOnly {
|
||||||
|
blkParams = append(blkParams, ",readonly")
|
||||||
|
}
|
||||||
|
|
||||||
qemuParams = append(qemuParams, "-device")
|
qemuParams = append(qemuParams, "-device")
|
||||||
qemuParams = append(qemuParams, strings.Join(deviceParams, ""))
|
qemuParams = append(qemuParams, strings.Join(deviceParams, ""))
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ var (
|
|||||||
deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1,romfile=efi-virtio.rom"
|
deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1,romfile=efi-virtio.rom"
|
||||||
deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1,romfile=efi-virtio.rom"
|
deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1,romfile=efi-virtio.rom"
|
||||||
deviceVhostUserBlkString = "-chardev socket,id=char2,path=/tmp/nonexistentsocket.socket -device vhost-user-blk-pci,logical_block_size=4096,size=512M,chardev=char2,romfile=efi-virtio.rom"
|
deviceVhostUserBlkString = "-chardev socket,id=char2,path=/tmp/nonexistentsocket.socket -device vhost-user-blk-pci,logical_block_size=4096,size=512M,chardev=char2,romfile=efi-virtio.rom"
|
||||||
deviceBlockString = "-device virtio-blk-pci,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none"
|
deviceBlockString = "-device virtio-blk-pci,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom,share-rw=on -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly"
|
||||||
devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff,romfile=efi-virtio.rom"
|
devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff,romfile=efi-virtio.rom"
|
||||||
devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff,romfile=efi-virtio.rom"
|
devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff,romfile=efi-virtio.rom"
|
||||||
romfile = "efi-virtio.rom"
|
romfile = "efi-virtio.rom"
|
||||||
|
@ -31,7 +31,7 @@ var (
|
|||||||
deviceVFIOString = "-device vfio-ccw,host=02:10.0,devno=" + DevNo
|
deviceVFIOString = "-device vfio-ccw,host=02:10.0,devno=" + DevNo
|
||||||
deviceSCSIControllerStr = "-device virtio-scsi-ccw,id=foo,devno=" + DevNo
|
deviceSCSIControllerStr = "-device virtio-scsi-ccw,id=foo,devno=" + DevNo
|
||||||
deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1,devno=" + DevNo
|
deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1,devno=" + DevNo
|
||||||
deviceBlockString = "-device virtio-blk-ccw,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + " -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none"
|
deviceBlockString = "-device virtio-blk-ccw,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + ",share-rw=on -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly"
|
||||||
devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff"
|
devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff"
|
||||||
devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff"
|
devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff"
|
||||||
romfile = ""
|
romfile = ""
|
||||||
|
@ -303,6 +303,8 @@ func TestAppendDeviceBlock(t *testing.T) {
|
|||||||
WCE: false,
|
WCE: false,
|
||||||
DisableModern: true,
|
DisableModern: true,
|
||||||
ROMFile: romfile,
|
ROMFile: romfile,
|
||||||
|
ShareRW: true,
|
||||||
|
ReadOnly: true,
|
||||||
}
|
}
|
||||||
if blkdev.Transport.isVirtioCCW(nil) {
|
if blkdev.Transport.isVirtioCCW(nil) {
|
||||||
blkdev.DevNo = DevNo
|
blkdev.DevNo = DevNo
|
||||||
|
Loading…
Reference in New Issue
Block a user