diff --git a/pkg/daemon/daemon.go b/pkg/daemon/daemon.go index df0c66323..3ec571924 100644 --- a/pkg/daemon/daemon.go +++ b/pkg/daemon/daemon.go @@ -583,13 +583,22 @@ func (dn *Daemon) nodeStateSyncHandler() error { // or there is a new config we need to apply // When using systemd configuration we write the file if dn.useSystemdService { - r, err := systemd.WriteConfFile(latestState, dn.devMode, dn.platform) + systemdConfModified, err := systemd.WriteConfFile(latestState, dn.devMode, dn.platform) if err != nil { log.Log.Error(err, "nodeStateSyncHandler(): failed to write configuration file for systemd mode") return err } - reqDrain = reqDrain || r - reqReboot = reqReboot || r + if systemdConfModified { + // remove existing result file to make sure that we will not use outdated result, e.g. in case if + // systemd service was not triggered for some reason + err = systemd.RemoveSriovResult() + if err != nil { + log.Log.Error(err, "nodeStateSyncHandler(): failed to remove result file for systemd mode") + return err + } + } + reqDrain = reqDrain || systemdConfModified + reqReboot = reqReboot || systemdConfModified log.Log.V(0).Info("nodeStateSyncHandler(): systemd mode WriteConfFile results", "drain-required", reqDrain, "reboot-required", reqReboot, "disable-drain", dn.disableDrain) diff --git a/pkg/systemd/systemd.go b/pkg/systemd/systemd.go index f32b95c8d..0bb23b576 100644 --- a/pkg/systemd/systemd.go +++ b/pkg/systemd/systemd.go @@ -209,6 +209,20 @@ func ReadSriovResult() (*SriovResult, error) { return result, err } +func RemoveSriovResult() error { + err := os.Remove(SriovHostSystemdResultPath) + if err != nil { + if os.IsNotExist(err) { + log.Log.V(2).Info("RemoveSriovResult(): result file not found") + return nil + } + log.Log.Error(err, "RemoveSriovResult(): failed to remove sriov result file", "path", SriovHostSystemdResultPath) + return err + } + log.Log.V(2).Info("RemoveSriovResult(): result file removed") + return nil +} + func WriteSriovSupportedNics() error { _, err := os.Stat(sriovHostSystemdSupportedNicPath) if err != nil {