From 5e0471ba7f7b6e2c4da3d5f2fea96e27f82bc10c Mon Sep 17 00:00:00 2001 From: Sam Peterson Date: Fri, 10 Nov 2023 15:35:35 -0600 Subject: [PATCH] set RLIMIT_NOFILE soft limit to match the hard limit on mac [NO NEW TESTS NEEDED] Signed-off-by: Sam Peterson --- cmd/podman/early_init_darwin.go | 28 ++++++++++++++++++++++++++++ cmd/podman/early_init_unsupported.go | 4 ++-- 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 cmd/podman/early_init_darwin.go diff --git a/cmd/podman/early_init_darwin.go b/cmd/podman/early_init_darwin.go new file mode 100644 index 0000000000..b21c23e182 --- /dev/null +++ b/cmd/podman/early_init_darwin.go @@ -0,0 +1,28 @@ +package main + +import ( + "fmt" + "os" + "syscall" +) + +func setRLimitsNoFile() error { + var rLimitNoFile syscall.Rlimit + if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimitNoFile); err != nil { + return fmt.Errorf("getting RLIMITS_NOFILE: %w", err) + } + err := syscall.Setrlimit(syscall.RLIMIT_NOFILE, &syscall.Rlimit{ + Max: rLimitNoFile.Max, + Cur: rLimitNoFile.Max, + }) + if err != nil { + return fmt.Errorf("setting new RLIMITS_NOFILE: %w", err) + } + return nil +} + +func earlyInitHook() { + if err := setRLimitsNoFile(); err != nil { + fmt.Fprintf(os.Stderr, "Failed to set RLIMITS_NOFILE: %s\n", err.Error()) + } +} diff --git a/cmd/podman/early_init_unsupported.go b/cmd/podman/early_init_unsupported.go index 55bb0906f9..2af3157b40 100644 --- a/cmd/podman/early_init_unsupported.go +++ b/cmd/podman/early_init_unsupported.go @@ -1,5 +1,5 @@ -//go:build !linux -// +build !linux +//go:build !linux && !darwin +// +build !linux,!darwin package main