mirror of
https://github.com/aljazceru/kata-containers.git
synced 2025-12-26 10:34:24 +01:00
When using experimental feature "newstore", we save and load devices information from `persist.json` instead of `devices.json`, in such case, file `devices.json` isn't needed anymore, so remove it. Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
107 lines
2.9 KiB
Go
107 lines
2.9 KiB
Go
// Copyright (c) 2016 Intel Corporation
|
|
// Copyright (c) 2019 Huawei Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package persistapi
|
|
|
|
// ============= sandbox level resources =============
|
|
|
|
// BlockDrive represents a block storage drive which may be used in case the storage
|
|
// driver has an underlying block storage device.
|
|
type BlockDrive struct {
|
|
// File is the path to the disk-image/device which will be used with this drive
|
|
File string
|
|
|
|
// Format of the drive
|
|
Format string
|
|
|
|
// ID is used to identify this drive in the hypervisor options.
|
|
ID string
|
|
|
|
// Index assigned to the drive. In case of virtio-scsi, this is used as SCSI LUN index
|
|
Index int
|
|
|
|
// MmioAddr is used to identify the slot at which the drive is attached (order?).
|
|
MmioAddr string
|
|
|
|
// PCIAddr is the PCI address used to identify the slot at which the drive is attached.
|
|
PCIAddr string
|
|
|
|
// SCSI Address of the block device, in case the device is attached using SCSI driver
|
|
// SCSI address is in the format SCSI-Id:LUN
|
|
SCSIAddr string
|
|
|
|
// NvdimmID is the nvdimm id inside the VM
|
|
NvdimmID string
|
|
|
|
// VirtPath at which the device appears inside the VM, outside of the container mount namespace
|
|
VirtPath string
|
|
}
|
|
|
|
// VFIODev represents a VFIO drive used for hotplugging
|
|
type VFIODev struct {
|
|
// ID is used to identify this drive in the hypervisor options.
|
|
ID string
|
|
|
|
// Type of VFIO device
|
|
Type uint32
|
|
|
|
// BDF (Bus:Device.Function) of the PCI address
|
|
BDF string
|
|
|
|
// Sysfsdev of VFIO mediated device
|
|
SysfsDev string
|
|
}
|
|
|
|
// VhostUserDeviceAttrs represents data shared by most vhost-user devices
|
|
type VhostUserDeviceAttrs struct {
|
|
DevID string
|
|
SocketPath string
|
|
Type string
|
|
|
|
// MacAddress is only meaningful for vhost user net device
|
|
MacAddress string
|
|
}
|
|
|
|
// DeviceState is sandbox level resource which represents host devices
|
|
// plugged to hypervisor, one Device can be shared among containers in POD
|
|
// Refs: virtcontainers/device/drivers/generic.go:GenericDevice
|
|
type DeviceState struct {
|
|
ID string
|
|
|
|
// Type is used to specify driver type
|
|
// Refs: virtcontainers/device/config/config.go:DeviceType
|
|
Type string
|
|
|
|
RefCount uint
|
|
AttachCount uint
|
|
|
|
// Type of device: c, b, u or p
|
|
// c , u - character(unbuffered)
|
|
// p - FIFO
|
|
// b - block(buffered) special file
|
|
// More info in mknod(1).
|
|
DevType string
|
|
|
|
// Major, minor numbers for device.
|
|
Major int64
|
|
Minor int64
|
|
|
|
// DriverOptions is specific options for each device driver
|
|
// for example, for BlockDevice, we can set DriverOptions["blockDriver"]="virtio-blk"
|
|
DriverOptions map[string]string
|
|
|
|
// ============ device driver specific data ===========
|
|
// BlockDrive is specific for block device driver
|
|
BlockDrive *BlockDrive `json:",omitempty"`
|
|
|
|
// VFIODev is specific VFIO device driver
|
|
VFIODevs []*VFIODev `json:",omitempty"`
|
|
|
|
// VhostUserDeviceAttrs is specific for vhost-user device driver
|
|
VhostUserDev *VhostUserDeviceAttrs `json:",omitempty"`
|
|
// ============ end device driver specific data ===========
|
|
}
|