Commit d279505b authored by Aya Levin's avatar Aya Levin Committed by David S. Miller

devlink: Add method for time-stamp on reporter's dump

When setting the dump's time-stamp, use ktime_get_real in addition to
jiffies. This simplifies the user space implementation and bypasses
some inconsistent behavior with translating jiffies to current time.
The time taken is transformed into nsec, to comply with y2038 issue.

Fixes: c8e1da0b ("devlink: Add health report functionality")
Signed-off-by: default avatarAya Levin <ayal@mellanox.com>
Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 40a1dcee
...@@ -421,6 +421,7 @@ enum devlink_attr { ...@@ -421,6 +421,7 @@ enum devlink_attr {
DEVLINK_ATTR_RELOAD_FAILED, /* u8 0 or 1 */ DEVLINK_ATTR_RELOAD_FAILED, /* u8 0 or 1 */
DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS, /* u64 */
/* add new attributes above here, update the policy in devlink.c */ /* add new attributes above here, update the policy in devlink.c */
__DEVLINK_ATTR_MAX, __DEVLINK_ATTR_MAX,
......
...@@ -4618,6 +4618,7 @@ struct devlink_health_reporter { ...@@ -4618,6 +4618,7 @@ struct devlink_health_reporter {
bool auto_recover; bool auto_recover;
u8 health_state; u8 health_state;
u64 dump_ts; u64 dump_ts;
u64 dump_real_ts;
u64 error_count; u64 error_count;
u64 recovery_count; u64 recovery_count;
u64 last_recovery_ts; u64 last_recovery_ts;
...@@ -4790,6 +4791,7 @@ static int devlink_health_do_dump(struct devlink_health_reporter *reporter, ...@@ -4790,6 +4791,7 @@ static int devlink_health_do_dump(struct devlink_health_reporter *reporter,
goto dump_err; goto dump_err;
reporter->dump_ts = jiffies; reporter->dump_ts = jiffies;
reporter->dump_real_ts = ktime_get_real_ns();
return 0; return 0;
...@@ -4952,6 +4954,10 @@ devlink_nl_health_reporter_fill(struct sk_buff *msg, ...@@ -4952,6 +4954,10 @@ devlink_nl_health_reporter_fill(struct sk_buff *msg,
jiffies_to_msecs(reporter->dump_ts), jiffies_to_msecs(reporter->dump_ts),
DEVLINK_ATTR_PAD)) DEVLINK_ATTR_PAD))
goto reporter_nest_cancel; goto reporter_nest_cancel;
if (reporter->dump_fmsg &&
nla_put_u64_64bit(msg, DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS,
reporter->dump_real_ts, DEVLINK_ATTR_PAD))
goto reporter_nest_cancel;
nla_nest_end(msg, reporter_attr); nla_nest_end(msg, reporter_attr);
genlmsg_end(msg, hdr); genlmsg_end(msg, hdr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment