Message ID | 1573120553-3887-1-git-send-email-ayal@mellanox.com |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | [net] devlink: Add method for time-stamp on reporter's dump | expand |
From: Aya Levin <ayal@mellanox.com> Date: Thu, 7 Nov 2019 11:55:53 +0200 > 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: c8e1da0bf923 ("devlink: Add health report functionality") > Signed-off-by: Aya Levin <ayal@mellanox.com> > Acked-by: Jiri Pirko <jiri@mellanox.com> > Acked-by: Arnd Bergmann <arnd@arndb.de> This does not apply to the current 'net' tree, please respin.
diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h index b558ea88b766..45501ef372a8 100644 --- a/include/uapi/linux/devlink.h +++ b/include/uapi/linux/devlink.h @@ -424,6 +424,7 @@ enum devlink_attr { DEVLINK_ATTR_NETNS_FD, /* u32 */ DEVLINK_ATTR_NETNS_PID, /* u32 */ DEVLINK_ATTR_NETNS_ID, /* u32 */ + DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS, /* u64 */ /* add new attributes above here, update the policy in devlink.c */ diff --git a/net/core/devlink.c b/net/core/devlink.c index 97e9a2246929..876fbd0f949d 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -4733,6 +4733,7 @@ struct devlink_health_reporter { bool auto_recover; u8 health_state; u64 dump_ts; + u64 dump_real_ts; u64 error_count; u64 recovery_count; u64 last_recovery_ts; @@ -4909,6 +4910,7 @@ static int devlink_health_do_dump(struct devlink_health_reporter *reporter, goto dump_err; reporter->dump_ts = jiffies; + reporter->dump_real_ts = ktime_get_real_ns(); return 0; @@ -5058,6 +5060,10 @@ devlink_nl_health_reporter_fill(struct sk_buff *msg, jiffies_to_msecs(reporter->dump_ts), DEVLINK_ATTR_PAD)) 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); genlmsg_end(msg, hdr);