The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/8067

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===

From 524c519eefe8a87b6152e152f04e1755fc0d1fcf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com>
Date: Tue, 20 Oct 2020 14:35:03 -0400
Subject: [PATCH 1/3] lxd/seccomp: Fix go vet
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
---
 lxd/seccomp/seccomp.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lxd/seccomp/seccomp.go b/lxd/seccomp/seccomp.go
index 3959fab4b4..90be41223e 100644
--- a/lxd/seccomp/seccomp.go
+++ b/lxd/seccomp/seccomp.go
@@ -2026,7 +2026,7 @@ func (s *Server) MountSyscallShift(c Instance) bool {
        return false
 }
 
-var pageSize int = 4096
+var pageSize = 4096
 
 func init() {
        tmp := unix.Getpagesize()

From a4f287312fb03f3b3d58201fa9e7ec568d5e7176 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com>
Date: Tue, 20 Oct 2020 14:57:22 -0400
Subject: [PATCH 2/3] lxd/instance: Add Architecture to common
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
---
 lxd/instance/drivers/driver_common.go |  6 ++++++
 lxd/instance/drivers/driver_lxc.go    | 10 ++--------
 lxd/instance/drivers/driver_qemu.go   | 10 ++--------
 lxd/instance/instance_interface.go    |  2 +-
 4 files changed, 11 insertions(+), 17 deletions(-)

diff --git a/lxd/instance/drivers/driver_common.go 
b/lxd/instance/drivers/driver_common.go
index 7f3e9da6dd..05cc85be09 100644
--- a/lxd/instance/drivers/driver_common.go
+++ b/lxd/instance/drivers/driver_common.go
@@ -11,6 +11,7 @@ import (
 // common provides structure common to all instance types.
 type common struct {
        dbType          instancetype.Type
+       architecture    int
        devPaths        []string
        expandedConfig  map[string]string
        expandedDevices deviceConfig.Devices
@@ -31,6 +32,11 @@ func (c *common) Type() instancetype.Type {
        return c.dbType
 }
 
+// Architecture returns the instance's architecture.
+func (c *common) Architecture() int {
+       return c.architecture
+}
+
 // ExpandedConfig returns instance's expanded config.
 func (c *common) ExpandedConfig() map[string]string {
        return c.expandedConfig
diff --git a/lxd/instance/drivers/driver_lxc.go 
b/lxd/instance/drivers/driver_lxc.go
index 81d814e3df..c5b694e0ee 100644
--- a/lxd/instance/drivers/driver_lxc.go
+++ b/lxd/instance/drivers/driver_lxc.go
@@ -145,6 +145,7 @@ func lxcCreate(s *state.State, args db.InstanceArgs) 
(instance.Instance, error)
        c := &lxc{
                common: common{
                        dbType:       args.Type,
+                       architecture: args.Architecture,
                        localConfig:  args.Config,
                        localDevices: args.Devices,
                        project:      args.Project,
@@ -156,7 +157,6 @@ func lxcCreate(s *state.State, args db.InstanceArgs) 
(instance.Instance, error)
                node:         args.Node,
                description:  args.Description,
                ephemeral:    args.Ephemeral,
-               architecture: args.Architecture,
                snapshot:     args.Snapshot,
                stateful:     args.Stateful,
                creationDate: args.CreationDate,
@@ -403,6 +403,7 @@ func lxcInstantiate(s *state.State, args db.InstanceArgs, 
expandedDevices device
        c := &lxc{
                common: common{
                        dbType:       args.Type,
+                       architecture: args.Architecture,
                        localConfig:  args.Config,
                        localDevices: args.Devices,
                        project:      args.Project,
@@ -413,7 +414,6 @@ func lxcInstantiate(s *state.State, args db.InstanceArgs, 
expandedDevices device
                name:         args.Name,
                description:  args.Description,
                ephemeral:    args.Ephemeral,
-               architecture: args.Architecture,
                snapshot:     args.Snapshot,
                creationDate: args.CreationDate,
                lastUsedDate: args.LastUsedDate,
@@ -448,7 +448,6 @@ type lxc struct {
        common
 
        // Properties
-       architecture int
        snapshot     bool
        creationDate time.Time
        lastUsedDate time.Time
@@ -6638,11 +6637,6 @@ func (c *lxc) IsSnapshot() bool {
        return c.snapshot
 }
 
-// Architecture returns architecture of instance.
-func (c *lxc) Architecture() int {
-       return c.architecture
-}
-
 // CreationDate returns creation date of instance.
 func (c *lxc) CreationDate() time.Time {
        return c.creationDate
diff --git a/lxd/instance/drivers/driver_qemu.go 
b/lxd/instance/drivers/driver_qemu.go
index 733a868605..9f433b2112 100644
--- a/lxd/instance/drivers/driver_qemu.go
+++ b/lxd/instance/drivers/driver_qemu.go
@@ -103,6 +103,7 @@ func qemuInstantiate(s *state.State, args db.InstanceArgs, 
expandedDevices devic
        vm := &qemu{
                common: common{
                        dbType:       args.Type,
+                       architecture: args.Architecture,
                        localConfig:  args.Config,
                        localDevices: args.Devices,
                        project:      args.Project,
@@ -113,7 +114,6 @@ func qemuInstantiate(s *state.State, args db.InstanceArgs, 
expandedDevices devic
                name:         args.Name,
                description:  args.Description,
                ephemeral:    args.Ephemeral,
-               architecture: args.Architecture,
                snapshot:     args.Snapshot,
                creationDate: args.CreationDate,
                lastUsedDate: args.LastUsedDate,
@@ -155,6 +155,7 @@ func qemuCreate(s *state.State, args db.InstanceArgs) 
(instance.Instance, error)
        vm := &qemu{
                common: common{
                        dbType:       args.Type,
+                       architecture: args.Architecture,
                        localConfig:  args.Config,
                        localDevices: args.Devices,
                        state:        s,
@@ -166,7 +167,6 @@ func qemuCreate(s *state.State, args db.InstanceArgs) 
(instance.Instance, error)
                node:         args.Node,
                description:  args.Description,
                ephemeral:    args.Ephemeral,
-               architecture: args.Architecture,
                snapshot:     args.Snapshot,
                stateful:     args.Stateful,
                creationDate: args.CreationDate,
@@ -312,7 +312,6 @@ type qemu struct {
        common
 
        // Properties.
-       architecture int
        snapshot     bool
        creationDate time.Time
        lastUsedDate time.Time
@@ -4367,11 +4366,6 @@ func (vm *qemu) Description() string {
        return vm.description
 }
 
-// Architecture returns the instance's architecture.
-func (vm *qemu) Architecture() int {
-       return vm.architecture
-}
-
 // CreationDate returns the instance's creation date.
 func (vm *qemu) CreationDate() time.Time {
        return vm.creationDate
diff --git a/lxd/instance/instance_interface.go 
b/lxd/instance/instance_interface.go
index e49458bd86..a19cdccba8 100644
--- a/lxd/instance/instance_interface.go
+++ b/lxd/instance/instance_interface.go
@@ -35,6 +35,7 @@ const (
 type ConfigReader interface {
        Project() string
        Type() instancetype.Type
+       Architecture() int
        ExpandedConfig() map[string]string
        ExpandedDevices() deviceConfig.Devices
        LocalConfig() map[string]string
@@ -105,7 +106,6 @@ type Instance interface {
        Location() string
        Name() string
        Description() string
-       Architecture() int
        CreationDate() time.Time
        LastUsedDate() time.Time
 

From fce5ee2821b109a013c91fe8b2a64c6b89c92d72 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com>
Date: Tue, 20 Oct 2020 14:57:50 -0400
Subject: [PATCH 3/3] lxd/devices: Disable USB on s390x
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
---
 lxd/device/usb.go                   |  5 +++++
 lxd/instance/drivers/driver_qemu.go | 21 ++++++++++++---------
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/lxd/device/usb.go b/lxd/device/usb.go
index 4c6efea101..e668acf278 100644
--- a/lxd/device/usb.go
+++ b/lxd/device/usb.go
@@ -11,6 +11,7 @@ import (
        "github.com/lxc/lxd/lxd/instance"
        "github.com/lxc/lxd/lxd/instance/instancetype"
        "github.com/lxc/lxd/shared"
+       "github.com/lxc/lxd/shared/osarch"
        "github.com/lxc/lxd/shared/validate"
 )
 
@@ -49,6 +50,10 @@ func (d *usb) validateConfig(instConf instance.ConfigReader) 
error {
                return ErrUnsupportedDevType
        }
 
+       if instConf.Architecture() == osarch.ARCH_64BIT_S390_BIG_ENDIAN {
+               return fmt.Errorf("USB devices aren't supported on s390x")
+       }
+
        rules := map[string]func(string) error{
                "vendorid":  validate.Optional(validate.IsDeviceID),
                "productid": validate.Optional(validate.IsDeviceID),
diff --git a/lxd/instance/drivers/driver_qemu.go 
b/lxd/instance/drivers/driver_qemu.go
index 9f433b2112..b1932e5fad 100644
--- a/lxd/instance/drivers/driver_qemu.go
+++ b/lxd/instance/drivers/driver_qemu.go
@@ -1755,15 +1755,18 @@ func (vm *qemu) generateQemuConfigFile(busName string, 
devConfs []*deviceConfig.
                return "", err
        }
 
-       devBus, devAddr, multi = bus.allocate(busFunctionGroupGeneric)
-       err = qemuUSB.Execute(sb, map[string]interface{}{
-               "bus":           bus.name,
-               "devBus":        devBus,
-               "devAddr":       devAddr,
-               "multifunction": multi,
-       })
-       if err != nil {
-               return "", err
+       // s390x doesn't really have USB.
+       if vm.architecture != osarch.ARCH_64BIT_S390_BIG_ENDIAN {
+               devBus, devAddr, multi = bus.allocate(busFunctionGroupGeneric)
+               err = qemuUSB.Execute(sb, map[string]interface{}{
+                       "bus":           bus.name,
+                       "devBus":        devBus,
+                       "devAddr":       devAddr,
+                       "multifunction": multi,
+               })
+               if err != nil {
+                       return "", err
+               }
        }
 
        devBus, devAddr, multi = bus.allocate(busFunctionGroupNone)
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to