Currently,  whenever sim is restarted SEL's time_offset is reset to
the initial reference point, which in case of a Linux's host is its
btime. As a default ref, this may feel fine but in case there was an
explicit Set SEL Time cmd sent during sim's runtime it feels
reasonable to expect the offset to remain the same across subsequent
resets.

The following proposal is to save the offset within the SEL file
and slurp it in whenever BMC is reinitialized (similarly to already
existing "last_{add,erase}_time" params).

In case host is rebooted the offset will still "break" (i.e. go
backwards) but the discrepancy wouldn't be that big as going
back to "pre-init" timestamp (which according to ipmitool is
anything < 0x20000000) - I believe this case would be also
less frequent compared to how often sim can be restarted in
general.

Signed-off-by: Michal Berger <[email protected]>
---
 lanserv/bmc_storage.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lanserv/bmc_storage.c b/lanserv/bmc_storage.c
index cb1678d9..021d0118 100644
--- a/lanserv/bmc_storage.c
+++ b/lanserv/bmc_storage.c
@@ -134,6 +134,8 @@ handle_sel_time(const char *name, long val, void *cb_data)
        mc->sel.last_add_time = val;
     else if (strcmp(name, "last_erase_time") == 0)
        mc->sel.last_erase_time = val;
+    else if (strcmp(name, "time_offset") == 0)
+       mc->sel.time_offset = val;
     return ITER_PERSIST_CONTINUE;
 }
 
@@ -183,6 +185,10 @@ rewrite_sels(lmc_data_t *mc)
     if (err)
        goto out_err;
 
+    err = add_persist_int(p, mc->sel.time_offset, "time_offset");
+    if (err)
+       goto out_err;
+
     for (e = mc->sel.entries; e; e = e->next) {
        err = add_persist_data(p, e->data, 16, "%d", e->record_id);
        if (err)
@@ -663,6 +669,8 @@ handle_set_sel_time(lmc_data_t    *mc,
 
     rdata[0] = 0;
     *rdata_len = 1;
+
+    rewrite_sels(mc);
 }
 
 /*
-- 
2.43.0



_______________________________________________
Openipmi-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openipmi-developer

Reply via email to