fn maybe_reload()

in rd-agent/src/cmd.rs [104:187]


    fn maybe_reload(&mut self) -> bool {
        let sobjs = &mut self.sobjs;
        let last_cpu_headroom = sobjs.cmd_file.data.sideloader.cpu_headroom;

        // Configs are controlled by benchmarks while they're running, don't
        // reload.
        let (re_bench, re_slice, _re_side, re_oomd) = match self.state {
            BenchIoCost | BenchHashd => (false, false, false, false),
            _ => {
                let force = self.force_apply;
                self.force_apply = false;
                (
                    Self::maybe_reload_one(&mut sobjs.bench_file) || force,
                    Self::maybe_reload_one(&mut sobjs.slice_file) || force,
                    Self::maybe_reload_one(&mut sobjs.side_def_file) || force,
                    Self::maybe_reload_one(&mut sobjs.oomd.file) || force,
                )
            }
        };
        let re_cmd = Self::maybe_reload_one(&mut sobjs.cmd_file);

        let mem_size = sobjs.bench_file.data.hashd.actual_mem_size();

        if re_bench {
            if let Err(e) = bench::apply_iocost(&mut sobjs.bench_file.data, &self.cfg) {
                warn!(
                    "cmd: Failed to apply changed iocost configuration on {:?} ({:?})",
                    self.cfg.scr_dev, &e
                );
            }
        }

        if re_bench || re_slice {
            if let Err(e) = slices::apply_slices(&mut sobjs.slice_file.data, mem_size, &self.cfg) {
                warn!("cmd: Failed to apply updated slice overrides ({:?})", &e);
            }
        }

        if (re_bench || re_oomd) && self.cfg.enforce.oomd {
            if let Err(e) = sobjs.oomd.apply() {
                error!("cmd: Failed to apply oomd configuration ({:?})", &e);
                panic!();
            }
        }

        let mut apply_sideloader = false;

        if re_slice {
            if sobjs
                .slice_file
                .data
                .controlls_disabled(super::instance_seq())
            {
                if sobjs.sideloader.svc.unit.state == US::Running {
                    info!("cmd: Controllers are being forced off, disabling sideloader");
                    let _ = sobjs.sideloader.svc.unit.stop();
                }
            } else {
                if sobjs.sideloader.svc.unit.state != US::Running {
                    info!("cmd: All controller enabled, enabling sideloader");
                    apply_sideloader = true;
                }
            }
        }

        if sobjs.cmd_file.data.sideloader.cpu_headroom != last_cpu_headroom {
            info!(
                "cmd: Updating sideloader headroom from {:.2} to {:.2}",
                last_cpu_headroom, sobjs.cmd_file.data.sideloader.cpu_headroom
            );
            apply_sideloader = true;
        }

        if apply_sideloader && self.cfg.enforce.all() {
            let sideloader_cmd = &sobjs.cmd_file.data.sideloader;
            let slice_knobs = &sobjs.slice_file.data;
            if let Err(e) = sobjs.sideloader.apply(sideloader_cmd, slice_knobs) {
                error!("cmd: Failed to apply sideloader changes ({:?})", &e);
                panic!();
            }
        }

        re_bench || re_cmd || re_slice
    }