From 2dc3ea4b87083b6c4b3737e8e8f9506e9be94853 Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Wed, 26 Jun 2024 16:14:44 -0700 Subject: [PATCH] libct: simplify setIOPriority/setupScheduler calls Move the nil check inside, simplifying the callers. Fixes: bfbd0305 ("Add I/O priority") Fixes: 770728e1 ("Support `process.scheduler`") Signed-off-by: Kir Kolyshkin --- libcontainer/init_linux.go | 3 +++ libcontainer/process_linux.go | 9 +++++---- libcontainer/setns_init_linux.go | 6 ++---- libcontainer/standard_init_linux.go | 13 +++++-------- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/libcontainer/init_linux.go b/libcontainer/init_linux.go index d23153e9b..cc897703a 100644 --- a/libcontainer/init_linux.go +++ b/libcontainer/init_linux.go @@ -662,6 +662,9 @@ func setupRlimits(limits []configs.Rlimit, pid int) error { } func setupScheduler(config *configs.Config) error { + if config.Scheduler == nil { + return nil + } attr, err := configs.ToSchedAttr(config.Scheduler) if err != nil { return err diff --git a/libcontainer/process_linux.go b/libcontainer/process_linux.go index dde6aecf1..7e17fe511 100644 --- a/libcontainer/process_linux.go +++ b/libcontainer/process_linux.go @@ -166,10 +166,8 @@ type setnsProcess struct { func (p *setnsProcess) start() (retErr error) { defer p.comm.closeParent() - if p.process.IOPriority != nil { - if err := setIOPriority(p.process.IOPriority); err != nil { - return err - } + if err := setIOPriority(p.process.IOPriority); err != nil { + return err } // get the "before" value of oom kill count @@ -912,6 +910,9 @@ func (p *Process) InitializeIO(rootuid, rootgid int) (i *IO, err error) { func setIOPriority(ioprio *configs.IOPriority) error { const ioprioWhoPgrp = 1 + if ioprio == nil { + return nil + } class, ok := configs.IOPrioClassMapping[ioprio.Class] if !ok { return fmt.Errorf("invalid io priority class: %s", ioprio.Class) diff --git a/libcontainer/setns_init_linux.go b/libcontainer/setns_init_linux.go index 92c6ef770..db4aa1463 100644 --- a/libcontainer/setns_init_linux.go +++ b/libcontainer/setns_init_linux.go @@ -71,10 +71,8 @@ func (l *linuxSetnsInit) Init() error { unix.Umask(int(*l.config.Config.Umask)) } - if l.config.Config.Scheduler != nil { - if err := setupScheduler(l.config.Config); err != nil { - return err - } + if err := setupScheduler(l.config.Config); err != nil { + return err } // Tell our parent that we're ready to exec. This must be done before the diff --git a/libcontainer/standard_init_linux.go b/libcontainer/standard_init_linux.go index 9f7fa45d5..fe6af5704 100644 --- a/libcontainer/standard_init_linux.go +++ b/libcontainer/standard_init_linux.go @@ -155,15 +155,12 @@ func (l *linuxStandardInit) Init() error { } } - if l.config.Config.Scheduler != nil { - if err := setupScheduler(l.config.Config); err != nil { - return err - } + if err := setupScheduler(l.config.Config); err != nil { + return err } - if l.config.Config.IOPriority != nil { - if err := setIOPriority(l.config.Config.IOPriority); err != nil { - return err - } + + if err := setIOPriority(l.config.Config.IOPriority); err != nil { + return err } // Tell our parent that we're ready to exec. This must be done before the