From 70d14082ea70e3df7f964b8d6344d4b4a0b11905 Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Tue, 6 Dec 2022 16:39:21 +0100 Subject: [PATCH] pkg/netns: UnmountNS() accept netns path as string I want to switch podman over to only using strings for the netns path. So we no longer pass this interface around. Buildah doesn't use this so we only need to fix it in Podman. I have a WIP PR[1] for that. [1] https://github.com/containers/podman/pull/16756 Signed-off-by: Paul Holzinger --- common/libnetwork/cni/run_test.go | 4 ++-- common/libnetwork/netavark/run_test.go | 8 ++++---- common/pkg/netns/netns_linux.go | 5 ++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/common/libnetwork/cni/run_test.go b/common/libnetwork/cni/run_test.go index 5abda14a52..498ed6d472 100644 --- a/common/libnetwork/cni/run_test.go +++ b/common/libnetwork/cni/run_test.go @@ -109,10 +109,10 @@ var _ = Describe("run CNI", func() { logrus.SetLevel(logrus.InfoLevel) _ = os.RemoveAll(cniConfDir) - _ = netns.UnmountNS(netNSTest) + _ = netns.UnmountNS(netNSTest.Path()) _ = netNSTest.Close() - _ = netns.UnmountNS(netNSContainer) + _ = netns.UnmountNS(netNSContainer.Path()) _ = netNSContainer.Close() }) diff --git a/common/libnetwork/netavark/run_test.go b/common/libnetwork/netavark/run_test.go index 3c688411b6..5b950078cf 100644 --- a/common/libnetwork/netavark/run_test.go +++ b/common/libnetwork/netavark/run_test.go @@ -108,10 +108,10 @@ var _ = Describe("run netavark", func() { logrus.SetLevel(logrus.InfoLevel) _ = os.RemoveAll(confDir) - _ = netns.UnmountNS(netNSTest) + _ = netns.UnmountNS(netNSTest.Path()) _ = netNSTest.Close() - _ = netns.UnmountNS(netNSContainer) + _ = netns.UnmountNS(netNSContainer.Path()) _ = netNSContainer.Close() _ = os.Unsetenv("NETAVARK_FW") @@ -286,8 +286,8 @@ var _ = Describe("run netavark", func() { netNSContainer2, err := netns.NewNS() Expect(err).ToNot(HaveOccurred()) - defer netns.UnmountNS(netNSContainer2) //nolint:errcheck - defer netNSContainer2.Close() //nolint:errcheck + defer netns.UnmountNS(netNSContainer2.Path()) //nolint:errcheck + defer netNSContainer2.Close() //nolint:errcheck res, err = libpodNet.Setup(netNSContainer2.Path(), setupOpts2) Expect(err).ToNot(HaveOccurred()) diff --git a/common/pkg/netns/netns_linux.go b/common/pkg/netns/netns_linux.go index b3459b2137..883fdd9567 100644 --- a/common/pkg/netns/netns_linux.go +++ b/common/pkg/netns/netns_linux.go @@ -179,14 +179,13 @@ func NewNSWithName(name string) (ns.NetNS, error) { return ns.GetNS(nsPath) } -// UnmountNS unmounts the NS held by the netns object -func UnmountNS(netns ns.NetNS) error { +// UnmountNS unmounts the given netns path +func UnmountNS(nsPath string) error { nsRunDir, err := GetNSRunDir() if err != nil { return err } - nsPath := netns.Path() // Only unmount if it's been bind-mounted (don't touch namespaces in /proc...) if strings.HasPrefix(nsPath, nsRunDir) { if err := unix.Unmount(nsPath, unix.MNT_DETACH); err != nil {