From 3eb694c51885b685a46c5ecceafc8684d8cbd004 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Mon, 29 Jun 2020 09:59:17 -0500 Subject: [PATCH] device: add ColdPlug flag Add ColdPlug flag to DeviceInfo and DeviceState to identify whether a device must be or was cold plugged Signed-off-by: Julio Montes --- src/runtime/virtcontainers/device/config/config.go | 4 ++++ src/runtime/virtcontainers/device/drivers/generic.go | 2 ++ src/runtime/virtcontainers/persist/api/device.go | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/src/runtime/virtcontainers/device/config/config.go b/src/runtime/virtcontainers/device/config/config.go index 18fcfedce..5f73cf7d8 100644 --- a/src/runtime/virtcontainers/device/config/config.go +++ b/src/runtime/virtcontainers/device/config/config.go @@ -117,6 +117,10 @@ type DeviceInfo struct { // for a nvdimm device in the guest. Pmem bool + // ColdPlug specifies whether the device must be cold plugged (true) + // or hot plugged (false). + ColdPlug bool + // FileMode permission bits for the device. FileMode os.FileMode diff --git a/src/runtime/virtcontainers/device/drivers/generic.go b/src/runtime/virtcontainers/device/drivers/generic.go index 805bf2136..01d4cbf5c 100644 --- a/src/runtime/virtcontainers/device/drivers/generic.go +++ b/src/runtime/virtcontainers/device/drivers/generic.go @@ -140,6 +140,7 @@ func (device *GenericDevice) Save() persistapi.DeviceState { dss.Major = info.Major dss.Minor = info.Minor dss.DriverOptions = info.DriverOptions + dss.ColdPlug = info.ColdPlug } return dss } @@ -155,5 +156,6 @@ func (device *GenericDevice) Load(ds persistapi.DeviceState) { Major: ds.Major, Minor: ds.Minor, DriverOptions: ds.DriverOptions, + ColdPlug: ds.ColdPlug, } } diff --git a/src/runtime/virtcontainers/persist/api/device.go b/src/runtime/virtcontainers/persist/api/device.go index 34916ed0b..8900c5f6f 100644 --- a/src/runtime/virtcontainers/persist/api/device.go +++ b/src/runtime/virtcontainers/persist/api/device.go @@ -103,6 +103,10 @@ type DeviceState struct { Major int64 Minor int64 + // ColdPlug specifies whether the device must be cold plugged (true) + // or hot plugged (false). + ColdPlug bool + // DriverOptions is specific options for each device driver // for example, for BlockDevice, we can set DriverOptions["blockDriver"]="virtio-blk" DriverOptions map[string]string