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