From dcd48a9ca1a008fb96803174e388528716237066 Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Sun, 2 Dec 2018 00:14:53 +0000 Subject: [PATCH] vc: capabilities: add capability flags for filesystem sharing Not all hypervisors support filesystem sharing. Add capability flags to track this. Since most hypervisor implementations in Kata *do* support this, the set semantices are reversed (ie, set the flag if you do not support the feature). Fixes: #1022 Signed-off-by: Eric Ernst Signed-off-by: Julio Montes --- virtcontainers/capabilities.go | 9 +++++++++ virtcontainers/capabilities_test.go | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/virtcontainers/capabilities.go b/virtcontainers/capabilities.go index 6eb34c3b81..72716ddb24 100644 --- a/virtcontainers/capabilities.go +++ b/virtcontainers/capabilities.go @@ -9,6 +9,7 @@ const ( blockDeviceSupport = 1 << iota blockDeviceHotplugSupport multiQueueSupport + fsSharingUnsupported ) type capabilities struct { @@ -47,3 +48,11 @@ func (caps *capabilities) isMultiQueueSupported() bool { func (caps *capabilities) setMultiQueueSupport() { caps.flags |= multiQueueSupport } + +func (caps *capabilities) isFsSharingSupported() bool { + return caps.flags&fsSharingUnsupported == 0 +} + +func (caps *capabilities) setFsSharingUnsupported() { + caps.flags |= fsSharingUnsupported +} diff --git a/virtcontainers/capabilities_test.go b/virtcontainers/capabilities_test.go index 91bde2fe55..3396989a85 100644 --- a/virtcontainers/capabilities_test.go +++ b/virtcontainers/capabilities_test.go @@ -34,3 +34,17 @@ func TestBlockDeviceHotplugCapability(t *testing.T) { t.Fatal() } } + +func TestFsSharingCapability(t *testing.T) { + var caps capabilities + + if !caps.isFsSharingSupported() { + t.Fatal() + } + + caps.setFsSharingUnsupported() + + if caps.isFsSharingSupported() { + t.Fatal() + } +}