From 0a1ffc1d9777755aaf3d26633ee37eb4b8eb78d9 Mon Sep 17 00:00:00 2001 From: Jose Carlos Venegas Munoz Date: Fri, 27 Mar 2020 04:26:57 +0000 Subject: [PATCH 1/2] types: Make FS sharing disable by default All the other caps are inverted (not supported by default). Make fs sharing not supported by default and let hypervisors expose if it supports it. Signed-off-by: Jose Carlos Venegas Munoz --- virtcontainers/acrn_arch_base.go | 2 -- virtcontainers/fc.go | 1 - virtcontainers/qemu_amd64.go | 1 + virtcontainers/qemu_arch_base.go | 1 + virtcontainers/types/capabilities.go | 8 ++++---- virtcontainers/types/capabilities_test.go | 4 ++-- 6 files changed, 8 insertions(+), 9 deletions(-) diff --git a/virtcontainers/acrn_arch_base.go b/virtcontainers/acrn_arch_base.go index 61197ea2fc..8e447ed16e 100644 --- a/virtcontainers/acrn_arch_base.go +++ b/virtcontainers/acrn_arch_base.go @@ -360,8 +360,6 @@ func (a *acrnArchBase) memoryTopology(memoryMb uint64) Memory { func (a *acrnArchBase) capabilities() types.Capabilities { var caps types.Capabilities - // For devicemapper disable support for filesystem sharing - caps.SetFsSharingUnsupported() caps.SetBlockDeviceSupport() caps.SetBlockDeviceHotplugSupport() diff --git a/virtcontainers/fc.go b/virtcontainers/fc.go index 26a60cb2ce..d2e39af16d 100644 --- a/virtcontainers/fc.go +++ b/virtcontainers/fc.go @@ -1065,7 +1065,6 @@ func (fc *firecracker) capabilities() types.Capabilities { span, _ := fc.trace("capabilities") defer span.Finish() var caps types.Capabilities - caps.SetFsSharingUnsupported() caps.SetBlockDeviceHotplugSupport() return caps diff --git a/virtcontainers/qemu_amd64.go b/virtcontainers/qemu_amd64.go index 69ceb4f519..1a5b266937 100644 --- a/virtcontainers/qemu_amd64.go +++ b/virtcontainers/qemu_amd64.go @@ -119,6 +119,7 @@ func (q *qemuAmd64) capabilities() types.Capabilities { } caps.SetMultiQueueSupport() + caps.SetFsSharingSupport() return caps } diff --git a/virtcontainers/qemu_arch_base.go b/virtcontainers/qemu_arch_base.go index a2af89f8b3..9d72dd09f2 100644 --- a/virtcontainers/qemu_arch_base.go +++ b/virtcontainers/qemu_arch_base.go @@ -271,6 +271,7 @@ func (q *qemuArchBase) capabilities() types.Capabilities { var caps types.Capabilities caps.SetBlockDeviceHotplugSupport() caps.SetMultiQueueSupport() + caps.SetFsSharingSupport() return caps } diff --git a/virtcontainers/types/capabilities.go b/virtcontainers/types/capabilities.go index fbd86a6209..28772f1b73 100644 --- a/virtcontainers/types/capabilities.go +++ b/virtcontainers/types/capabilities.go @@ -9,7 +9,7 @@ const ( blockDeviceSupport = 1 << iota blockDeviceHotplugSupport multiQueueSupport - fsSharingUnsupported + fsSharingSupported ) // Capabilities describe a virtcontainers hypervisor capabilities @@ -50,10 +50,10 @@ func (caps *Capabilities) SetMultiQueueSupport() { // IsFsSharingSupported tells if an hypervisor supports host filesystem sharing. func (caps *Capabilities) IsFsSharingSupported() bool { - return caps.flags&fsSharingUnsupported == 0 + return caps.flags&fsSharingSupported != 0 } // SetFsSharingUnsupported sets the host filesystem sharing capability to true. -func (caps *Capabilities) SetFsSharingUnsupported() { - caps.flags |= fsSharingUnsupported +func (caps *Capabilities) SetFsSharingSupport() { + caps.flags |= fsSharingSupported } diff --git a/virtcontainers/types/capabilities_test.go b/virtcontainers/types/capabilities_test.go index 36b7c3e6c1..375cd8ce9b 100644 --- a/virtcontainers/types/capabilities_test.go +++ b/virtcontainers/types/capabilities_test.go @@ -30,7 +30,7 @@ func TestBlockDeviceHotplugCapability(t *testing.T) { func TestFsSharingCapability(t *testing.T) { var caps Capabilities - assert.True(t, caps.IsFsSharingSupported()) - caps.SetFsSharingUnsupported() assert.False(t, caps.IsFsSharingSupported()) + caps.SetFsSharingSupport() + assert.True(t, caps.IsFsSharingSupported()) } From 39e354f609497c330ad01541c172631a9d222890 Mon Sep 17 00:00:00 2001 From: Jose Carlos Venegas Munoz Date: Fri, 27 Mar 2020 05:38:53 +0000 Subject: [PATCH 2/2] clh: Implement capabilities Make explicit that sharedfs is supported. Other features are not supported today. Fixes: #2567 Signed-off-by: Jose Carlos Venegas Munoz --- virtcontainers/clh.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/virtcontainers/clh.go b/virtcontainers/clh.go index 10a6048a0c..cb05786753 100644 --- a/virtcontainers/clh.go +++ b/virtcontainers/clh.go @@ -579,8 +579,8 @@ func (clh *cloudHypervisor) capabilities() types.Capabilities { clh.Logger().WithField("function", "capabilities").Info("get Capabilities") var caps types.Capabilities + caps.SetFsSharingSupport() return caps - } func (clh *cloudHypervisor) trace(name string) (opentracing.Span, context.Context) {