From da08a65de3b70811aed3f3cc8f8511fc6fffa209 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Thu, 26 Apr 2018 10:34:31 -0700 Subject: [PATCH] device: Assign pci address to block device for kata_agent Store PCI address for a block device on hotplugging it via virtio-blk. This address will be passed by kata agent in the device "Id" field. The agent within the guest can then use this to identify the PCI slot in the guest and create the device node based on it. Signed-off-by: Archana Shinde --- virtcontainers/device.go | 1 + virtcontainers/kata_agent.go | 2 +- virtcontainers/kata_agent_test.go | 10 +++++----- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/virtcontainers/device.go b/virtcontainers/device.go index 77aeb6441..6b852bcbb 100644 --- a/virtcontainers/device.go +++ b/virtcontainers/device.go @@ -391,6 +391,7 @@ func (device *BlockDevice) attach(h hypervisor, c *Container) (err error) { if c.sandbox.config.HypervisorConfig.BlockDeviceDriver == VirtioBlock { device.VirtPath = filepath.Join("/dev", driveName) + device.PCIAddr = drive.PCIAddr } else { scsiAddr, err := getSCSIAddress(index) if err != nil { diff --git a/virtcontainers/kata_agent.go b/virtcontainers/kata_agent.go index 2c2e8d464..aa94ed316 100644 --- a/virtcontainers/kata_agent.go +++ b/virtcontainers/kata_agent.go @@ -629,7 +629,7 @@ func (k *kataAgent) appendDevices(deviceList []*grpc.Device, devices []Device) [ if d.SCSIAddr == "" { kataDevice.Type = kataBlkDevType - kataDevice.VmPath = d.VirtPath + kataDevice.Id = d.PCIAddr } else { kataDevice.Type = kataSCSIDevType kataDevice.Id = d.SCSIAddr diff --git a/virtcontainers/kata_agent_test.go b/virtcontainers/kata_agent_test.go index d59ef9e48..6b58080a1 100644 --- a/virtcontainers/kata_agent_test.go +++ b/virtcontainers/kata_agent_test.go @@ -24,9 +24,9 @@ import ( ) var ( - testKataProxyURLTempl = "unix://%s/kata-proxy-test.sock" - testBlockDeviceVirtPath = "testBlockDeviceVirtPath" - testBlockDeviceCtrPath = "testBlockDeviceCtrPath" + testKataProxyURLTempl = "unix://%s/kata-proxy-test.sock" + testBlockDeviceCtrPath = "testBlockDeviceCtrPath" + testPCIAddr = "04/02" ) func proxyHandlerDiscard(c net.Conn) { @@ -366,16 +366,16 @@ func TestAppendDevices(t *testing.T) { expected := []*pb.Device{ { Type: kataBlkDevType, - VmPath: testBlockDeviceVirtPath, ContainerPath: testBlockDeviceCtrPath, + Id: testPCIAddr, }, } ctrDevices := []Device{ &BlockDevice{ - VirtPath: testBlockDeviceVirtPath, DeviceInfo: DeviceInfo{ ContainerPath: testBlockDeviceCtrPath, }, + PCIAddr: testPCIAddr, }, }