From 63ab12cd3adca37003ee92aca46a70409edee7e5 Mon Sep 17 00:00:00 2001 From: Artem Khramov Date: Sun, 19 Sep 2021 13:58:57 +0300 Subject: [PATCH 1/2] Port pkg/system/mknod.go to FreeBSD Because FreeBSD uses 64-bit device nodes (see https://reviews.freebsd.org/rS318736), Linux implementation of `system.Mknod` & `system.Mkdev` is not sufficient. This change adds freebsd-specific implementations for `Mknod` and Mkdev`. Signed-off-by: Artem Khramov (cherry picked from commit f3d3994a4bf3b723df3b13e7180a592851535aa8) Signed-off-by: Doug Rabson --- pkg/system/mknod.go | 6 ------ pkg/system/mknod_freebsd.go | 14 ++++++++++++++ pkg/system/mknod_linux.go | 11 +++++++++++ 3 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 pkg/system/mknod_freebsd.go create mode 100644 pkg/system/mknod_linux.go diff --git a/pkg/system/mknod.go b/pkg/system/mknod.go index 5734d47d45ef0..d27152c0f5b58 100644 --- a/pkg/system/mknod.go +++ b/pkg/system/mknod.go @@ -7,12 +7,6 @@ import ( "golang.org/x/sys/unix" ) -// Mknod creates a filesystem node (file, device special file or named pipe) named path -// with attributes specified by mode and dev. -func Mknod(path string, mode uint32, dev int) error { - return unix.Mknod(path, mode, dev) -} - // Mkdev is used to build the value of linux devices (in /dev/) which specifies major // and minor number of the newly created device special file. // Linux device nodes are a bit weird due to backwards compat with 16 bit device nodes. diff --git a/pkg/system/mknod_freebsd.go b/pkg/system/mknod_freebsd.go new file mode 100644 index 0000000000000..c890be116f796 --- /dev/null +++ b/pkg/system/mknod_freebsd.go @@ -0,0 +1,14 @@ +//go:build freebsd +// +build freebsd + +package system // import "github.com/docker/docker/pkg/system" + +import ( + "golang.org/x/sys/unix" +) + +// Mknod creates a filesystem node (file, device special file or named pipe) named path +// with attributes specified by mode and dev. +func Mknod(path string, mode uint32, dev int) error { + return unix.Mknod(path, mode, uint64(dev)) +} diff --git a/pkg/system/mknod_linux.go b/pkg/system/mknod_linux.go new file mode 100644 index 0000000000000..5c65f8a49c31b --- /dev/null +++ b/pkg/system/mknod_linux.go @@ -0,0 +1,11 @@ +package system // import "github.com/docker/docker/pkg/system" + +import ( + "golang.org/x/sys/unix" +) + +// Mknod creates a filesystem node (file, device special file or named pipe) named path +// with attributes specified by mode and dev. +func Mknod(path string, mode uint32, dev int) error { + return unix.Mknod(path, mode, dev) +} From f55b030fa046fbdc574d2db0f38a99945624b1fb Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Wed, 15 Dec 2021 22:15:07 -0800 Subject: [PATCH 2/2] system: unbreak build for darwin Signed-off-by: Tonis Tiigi (cherry picked from commit 26dafe43a419ea8622ff65ac1671f4b854c4bd5a) Signed-off-by: Doug Rabson --- pkg/system/{mknod_linux.go => mknod_unix.go} | 3 +++ 1 file changed, 3 insertions(+) rename pkg/system/{mknod_linux.go => mknod_unix.go} (84%) diff --git a/pkg/system/mknod_linux.go b/pkg/system/mknod_unix.go similarity index 84% rename from pkg/system/mknod_linux.go rename to pkg/system/mknod_unix.go index 5c65f8a49c31b..4586aad19e68e 100644 --- a/pkg/system/mknod_linux.go +++ b/pkg/system/mknod_unix.go @@ -1,3 +1,6 @@ +//go:build !freebsd && !windows +// +build !freebsd,!windows + package system // import "github.com/docker/docker/pkg/system" import (