mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-25 18:30:06 +00:00
devlink: add support for reporter recovery completion
It is possible that a reporter recovery completion do not finish successfully when recovery is triggered via devlink_health_reporter_recover as recovery could be processed in different context. In such scenario an error is returned by driver when recover hook is invoked and successful recovery completion is intimated later. Expose devlink recover done API to update recovery stats. Signed-off-by: Vikas Gupta <vikas.gupta@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6ea0032f84
commit
6181e5cb75
2 changed files with 11 additions and 2 deletions
|
@ -1000,6 +1000,8 @@ int devlink_health_report(struct devlink_health_reporter *reporter,
|
|||
void
|
||||
devlink_health_reporter_state_update(struct devlink_health_reporter *reporter,
|
||||
enum devlink_health_reporter_state state);
|
||||
void
|
||||
devlink_health_reporter_recovery_done(struct devlink_health_reporter *reporter);
|
||||
|
||||
bool devlink_is_reload_failed(const struct devlink *devlink);
|
||||
|
||||
|
|
|
@ -4860,6 +4860,14 @@ devlink_health_reporter_state_update(struct devlink_health_reporter *reporter,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(devlink_health_reporter_state_update);
|
||||
|
||||
void
|
||||
devlink_health_reporter_recovery_done(struct devlink_health_reporter *reporter)
|
||||
{
|
||||
reporter->recovery_count++;
|
||||
reporter->last_recovery_ts = jiffies;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devlink_health_reporter_recovery_done);
|
||||
|
||||
static int
|
||||
devlink_health_reporter_recover(struct devlink_health_reporter *reporter,
|
||||
void *priv_ctx, struct netlink_ext_ack *extack)
|
||||
|
@ -4876,9 +4884,8 @@ devlink_health_reporter_recover(struct devlink_health_reporter *reporter,
|
|||
if (err)
|
||||
return err;
|
||||
|
||||
reporter->recovery_count++;
|
||||
devlink_health_reporter_recovery_done(reporter);
|
||||
reporter->health_state = DEVLINK_HEALTH_REPORTER_STATE_HEALTHY;
|
||||
reporter->last_recovery_ts = jiffies;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue