From f3d3994a4bf3b723df3b13e7180a592851535aa8 Mon Sep 17 00:00:00 2001 From: Artem Khramov Date: Sun, 19 Sep 2021 13:58:57 +0300 Subject: [PATCH] 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 --- 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 5734d47d45..d27152c0f5 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 0000000000..c890be116f --- /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 0000000000..5c65f8a49c --- /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) +}