mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
devlink: Fix reporter's recovery condition
[ Upstream commitbea0c5c942
] Devlink health core conditions the reporter's recovery with the expiration of the grace period. This is not relevant for the first recovery. Explicitly demand that the grace period will only apply to recoveries other than the first. Fixes:c8e1da0bf9
("devlink: Add health report functionality") Signed-off-by: Aya Levin <ayal@mellanox.com> Reviewed-by: Moshe Shemesh <moshe@mellanox.com> Reviewed-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
4ac87b6af4
commit
9325e9e5ab
@ -4823,6 +4823,7 @@ int devlink_health_report(struct devlink_health_reporter *reporter,
|
||||
{
|
||||
enum devlink_health_reporter_state prev_health_state;
|
||||
struct devlink *devlink = reporter->devlink;
|
||||
unsigned long recover_ts_threshold;
|
||||
|
||||
/* write a log message of the current error */
|
||||
WARN_ON(!msg);
|
||||
@ -4832,10 +4833,12 @@ int devlink_health_report(struct devlink_health_reporter *reporter,
|
||||
reporter->health_state = DEVLINK_HEALTH_REPORTER_STATE_ERROR;
|
||||
|
||||
/* abort if the previous error wasn't recovered */
|
||||
recover_ts_threshold = reporter->last_recovery_ts +
|
||||
msecs_to_jiffies(reporter->graceful_period);
|
||||
if (reporter->auto_recover &&
|
||||
(prev_health_state != DEVLINK_HEALTH_REPORTER_STATE_HEALTHY ||
|
||||
jiffies - reporter->last_recovery_ts <
|
||||
msecs_to_jiffies(reporter->graceful_period))) {
|
||||
(reporter->last_recovery_ts && reporter->recovery_count &&
|
||||
time_is_after_jiffies(recover_ts_threshold)))) {
|
||||
trace_devlink_health_recover_aborted(devlink,
|
||||
reporter->ops->name,
|
||||
reporter->health_state,
|
||||
|
Loading…
Reference in New Issue
Block a user