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

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 666853963fafdd06050e1c7ee6aaa7755c7c8d73 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com>
Date: Tue, 26 May 2020 11:08:54 -0400
Subject: [PATCH 1/3] lxd: Make use of ExitCode
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/device_utils_disk.go          |  6 ++----
 lxd/patches_utils.go                     |  4 +---
 lxd/rsync/rsync.go                       |  4 +---
 lxd/storage/drivers/driver_ceph_utils.go | 15 +++++----------
 lxd/storage/drivers/driver_common.go     |  5 +----
 lxd/storage/drivers/driver_lvm_utils.go  |  4 +---
 shared/subprocess/proc.go                |  2 +-
 7 files changed, 12 insertions(+), 28 deletions(-)

diff --git a/lxd/device/device_utils_disk.go b/lxd/device/device_utils_disk.go
index a9245d0d0e..217be7e157 100644
--- a/lxd/device/device_utils_disk.go
+++ b/lxd/device/device_utils_disk.go
@@ -6,7 +6,6 @@ import (
        "os"
        "os/exec"
        "strings"
-       "syscall"
        "time"
 
        "golang.org/x/sys/unix"
@@ -149,13 +148,12 @@ again:
                if ok {
                        exitError, ok := runError.Err.(*exec.ExitError)
                        if ok {
-                               waitStatus := 
exitError.Sys().(syscall.WaitStatus)
-                               if waitStatus.ExitStatus() == 22 {
+                               if exitError.ExitCode() == 22 {
                                        // EINVAL (already unmapped)
                                        return nil
                                }
 
-                               if waitStatus.ExitStatus() == 16 {
+                               if exitError.ExitCode() == 16 {
                                        // EBUSY (currently in use)
                                        busyCount++
                                        if busyCount == 10 {
diff --git a/lxd/patches_utils.go b/lxd/patches_utils.go
index c66ad692fd..256422f32e 100644
--- a/lxd/patches_utils.go
+++ b/lxd/patches_utils.go
@@ -9,7 +9,6 @@ import (
        "sort"
        "strconv"
        "strings"
-       "syscall"
 
        "github.com/lxc/lxd/lxd/project"
        "github.com/lxc/lxd/lxd/state"
@@ -171,8 +170,7 @@ func lvmLVExists(lvName string) (bool, error) {
                if ok {
                        exitError, ok := runErr.Err.(*exec.ExitError)
                        if ok {
-                               waitStatus := 
exitError.Sys().(syscall.WaitStatus)
-                               if waitStatus.ExitStatus() == 5 {
+                               if exitError.ExitCode() == 5 {
                                        // logical volume not found
                                        return false, nil
                                }
diff --git a/lxd/rsync/rsync.go b/lxd/rsync/rsync.go
index 8f811ff4f8..b5b70a58ce 100644
--- a/lxd/rsync/rsync.go
+++ b/lxd/rsync/rsync.go
@@ -7,7 +7,6 @@ import (
        "net"
        "os"
        "os/exec"
-       "syscall"
        "time"
 
        "github.com/pborman/uuid"
@@ -67,8 +66,7 @@ func LocalCopy(source string, dest string, bwlimit string, 
xattrs bool, rsyncArg
                if ok {
                        exitError, ok := runError.Err.(*exec.ExitError)
                        if ok {
-                               waitStatus := 
exitError.Sys().(syscall.WaitStatus)
-                               if waitStatus.ExitStatus() == 24 {
+                               if exitError.ExitCode() == 24 {
                                        return msg, nil
                                }
                        }
diff --git a/lxd/storage/drivers/driver_ceph_utils.go 
b/lxd/storage/drivers/driver_ceph_utils.go
index 47ebdb1be2..a7a0f1fea6 100644
--- a/lxd/storage/drivers/driver_ceph_utils.go
+++ b/lxd/storage/drivers/driver_ceph_utils.go
@@ -10,7 +10,6 @@ import (
        "regexp"
        "strconv"
        "strings"
-       "syscall"
        "time"
 
        "github.com/pborman/uuid"
@@ -157,13 +156,12 @@ again:
                if ok {
                        exitError, ok := runError.Err.(*exec.ExitError)
                        if ok {
-                               waitStatus := 
exitError.Sys().(syscall.WaitStatus)
-                               if waitStatus.ExitStatus() == 22 {
+                               if exitError.ExitCode() == 22 {
                                        // EINVAL (already unmapped).
                                        return nil
                                }
 
-                               if waitStatus.ExitStatus() == 16 {
+                               if exitError.ExitCode() == 16 {
                                        // EBUSY (currently in use).
                                        busyCount++
                                        if busyCount == 10 {
@@ -203,8 +201,7 @@ again:
                if ok {
                        exitError, ok := runError.Err.(*exec.ExitError)
                        if ok {
-                               waitStatus := 
exitError.Sys().(syscall.WaitStatus)
-                               if waitStatus.ExitStatus() == 22 {
+                               if exitError.ExitCode() == 22 {
                                        // EINVAL (already unmapped).
                                        return nil
                                }
@@ -256,8 +253,7 @@ func (d *ceph) rbdProtectVolumeSnapshot(vol Volume, 
snapshotName string) error {
                if ok {
                        exitError, ok := runError.Err.(*exec.ExitError)
                        if ok {
-                               waitStatus := 
exitError.Sys().(syscall.WaitStatus)
-                               if waitStatus.ExitStatus() == 16 {
+                               if exitError.ExitCode() == 16 {
                                        // EBUSY (snapshot already protected).
                                        return nil
                                }
@@ -287,8 +283,7 @@ func (d *ceph) rbdUnprotectVolumeSnapshot(vol Volume, 
snapshotName string) error
                if ok {
                        exitError, ok := runError.Err.(*exec.ExitError)
                        if ok {
-                               waitStatus := 
exitError.Sys().(syscall.WaitStatus)
-                               if waitStatus.ExitStatus() == 22 {
+                               if exitError.ExitCode() == 22 {
                                        // EBUSY (snapshot already unprotected).
                                        return nil
                                }
diff --git a/lxd/storage/drivers/driver_common.go 
b/lxd/storage/drivers/driver_common.go
index 7f0c7dbf78..e3992540c4 100644
--- a/lxd/storage/drivers/driver_common.go
+++ b/lxd/storage/drivers/driver_common.go
@@ -4,7 +4,6 @@ import (
        "fmt"
        "os/exec"
        "strings"
-       "syscall"
 
        "github.com/pkg/errors"
 
@@ -207,11 +206,9 @@ func (d *common) moveGPTAltHeader(devPath string) error {
        if ok {
                exitError, ok := runErr.Err.(*exec.ExitError)
                if ok {
-                       waitStatus := exitError.Sys().(syscall.WaitStatus)
-
                        // sgdisk manpage says exit status 3 means:
                        // "Non-GPT disk detected and no -g option, but 
operation requires a write action".
-                       if waitStatus.ExitStatus() == 3 {
+                       if exitError.ExitCode() == 3 {
                                return nil // Non-error as non-GPT disk 
specified.
                        }
                }
diff --git a/lxd/storage/drivers/driver_lvm_utils.go 
b/lxd/storage/drivers/driver_lvm_utils.go
index fed31681bc..25fccb82bb 100644
--- a/lxd/storage/drivers/driver_lvm_utils.go
+++ b/lxd/storage/drivers/driver_lvm_utils.go
@@ -7,7 +7,6 @@ import (
        "path/filepath"
        "strconv"
        "strings"
-       "syscall"
 
        "github.com/pkg/errors"
 
@@ -120,8 +119,7 @@ func (d *lvm) isLVMNotFoundExitError(err error) bool {
        if ok {
                exitError, ok := runErr.Err.(*exec.ExitError)
                if ok {
-                       waitStatus := exitError.Sys().(syscall.WaitStatus)
-                       if waitStatus.ExitStatus() == 5 {
+                       if exitError.ExitCode() == 5 {
                                return true
                        }
                }
diff --git a/shared/subprocess/proc.go b/shared/subprocess/proc.go
index ca24eca9f1..06157e6db0 100644
--- a/shared/subprocess/proc.go
+++ b/shared/subprocess/proc.go
@@ -103,7 +103,7 @@ func (p *Process) Start() error {
                        return
                }
 
-               exitcode := 
int64(procstate.Sys().(syscall.WaitStatus).ExitStatus())
+               exitcode := int64(procstate.ExitCode())
                p.exitCode = exitcode
                close(p.chExit)
        }()

From ca8c175dca9b695c80948c85aef7942673ad88f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com>
Date: Tue, 26 May 2020 11:09:30 -0400
Subject: [PATCH 2/3] share/subprocess: Reduce sleep back to 5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
---
 shared/subprocess/testscript/stoprestart.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/shared/subprocess/testscript/stoprestart.sh 
b/shared/subprocess/testscript/stoprestart.sh
index fb36b8e0c8..2f74e74ce2 100644
--- a/shared/subprocess/testscript/stoprestart.sh
+++ b/shared/subprocess/testscript/stoprestart.sh
@@ -2,4 +2,4 @@
 echo "hello again"
 echo "waiting now"
 
-sleep 10
+sleep 5

From 4f82acaeb38498725c998bd9ac1acd9959885c63 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com>
Date: Tue, 26 May 2020 15:24:54 -0400
Subject: [PATCH 3/3] lxd/instances/lxc: Fix calls to forknet
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_lxc.go | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/lxd/instance/drivers/driver_lxc.go 
b/lxd/instance/drivers/driver_lxc.go
index 4249eb814f..967a386dbf 100644
--- a/lxd/instance/drivers/driver_lxc.go
+++ b/lxd/instance/drivers/driver_lxc.go
@@ -1844,8 +1844,8 @@ func (c *lxc) DeviceEventHandler(runConf 
*deviceConfig.RunConfig) error {
                for _, eventParts := range runConf.Uevents {
                        ueventArray := make([]string, 4)
                        ueventArray[0] = "forkuevent"
-                       ueventArray[1] = "--"
                        ueventArray[2] = "inject"
+                       ueventArray[1] = "--"
                        ueventArray[3] = fmt.Sprintf("%d", c.InitPID())
                        ueventArray[4] = fmt.Sprintf("%d", pidFdNr)
                        length := 0
@@ -2262,8 +2262,8 @@ func (c *lxc) detachInterfaceRename(netns string, ifName 
string, hostName string
        _, err := shared.RunCommand(
                c.state.OS.ExecPath,
                "forknet",
-               "--",
                "detach",
+               "--",
                netns,
                fmt.Sprintf("%d", lxdPID),
                ifName,
@@ -5825,19 +5825,19 @@ func (c *lxc) networkState() 
map[string]api.InstanceStateNetwork {
                }
 
                // Get the network state from the container
-               _, out, err := shared.RunCommandSplit(
+               out, _, err := shared.RunCommandSplit(
                        nil,
                        []*os.File{pidFd},
                        c.state.OS.ExecPath,
                        "forknet",
-                       "--",
                        "info",
+                       "--",
                        fmt.Sprintf("%d", pid),
                        fmt.Sprintf("%d", pidFdNr))
 
                // Process forkgetnet response
                if err != nil {
-                       logger.Error("Error calling 'lxd forkgetnet", 
log.Ctx{"container": c.name, "err": err, "pid": pid})
+                       logger.Error("Error calling 'lxd forknet", 
log.Ctx{"container": c.name, "err": err, "pid": pid})
                        return result
                }
 
@@ -5849,7 +5849,7 @@ func (c *lxc) networkState() 
map[string]api.InstanceStateNetwork {
                nw := map[string]api.InstanceStateNetwork{}
                err = json.Unmarshal([]byte(out), &nw)
                if err != nil {
-                       logger.Error("Failure to read forkgetnet json", 
log.Ctx{"container": c.name, "err": err})
+                       logger.Error("Failure to read forknet json", 
log.Ctx{"container": c.name, "err": err})
                        return result
                }
                result = nw
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to