mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
devlink: Refactor devlink health reporter constructor
Prepare a common routine in devlink_health_reporter_create() for usage in similar functions for devlink port health reporters. Signed-off-by: Vladyslav Tarasiuk <vladyslavt@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>
This commit is contained in:
parent
d6c7fc0c8c
commit
c57544b3de
1 changed files with 28 additions and 17 deletions
|
@ -5321,6 +5321,31 @@ devlink_health_reporter_find_by_name(struct devlink *devlink,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static struct devlink_health_reporter *
|
||||
__devlink_health_reporter_create(struct devlink *devlink,
|
||||
const struct devlink_health_reporter_ops *ops,
|
||||
u64 graceful_period, void *priv)
|
||||
{
|
||||
struct devlink_health_reporter *reporter;
|
||||
|
||||
if (WARN_ON(graceful_period && !ops->recover))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
reporter = kzalloc(sizeof(*reporter), GFP_KERNEL);
|
||||
if (!reporter)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
reporter->priv = priv;
|
||||
reporter->ops = ops;
|
||||
reporter->devlink = devlink;
|
||||
reporter->graceful_period = graceful_period;
|
||||
reporter->auto_recover = !!ops->recover;
|
||||
reporter->auto_dump = !!ops->dump;
|
||||
mutex_init(&reporter->dump_lock);
|
||||
refcount_set(&reporter->refcount, 1);
|
||||
return reporter;
|
||||
}
|
||||
|
||||
/**
|
||||
* devlink_health_reporter_create - create devlink health reporter
|
||||
*
|
||||
|
@ -5342,25 +5367,11 @@ devlink_health_reporter_create(struct devlink *devlink,
|
|||
goto unlock;
|
||||
}
|
||||
|
||||
if (WARN_ON(graceful_period && !ops->recover)) {
|
||||
reporter = ERR_PTR(-EINVAL);
|
||||
reporter = __devlink_health_reporter_create(devlink, ops,
|
||||
graceful_period, priv);
|
||||
if (IS_ERR(reporter))
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
reporter = kzalloc(sizeof(*reporter), GFP_KERNEL);
|
||||
if (!reporter) {
|
||||
reporter = ERR_PTR(-ENOMEM);
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
reporter->priv = priv;
|
||||
reporter->ops = ops;
|
||||
reporter->devlink = devlink;
|
||||
reporter->graceful_period = graceful_period;
|
||||
reporter->auto_recover = !!ops->recover;
|
||||
reporter->auto_dump = !!ops->dump;
|
||||
mutex_init(&reporter->dump_lock);
|
||||
refcount_set(&reporter->refcount, 1);
|
||||
list_add_tail(&reporter->list, &devlink->reporter_list);
|
||||
unlock:
|
||||
mutex_unlock(&devlink->reporters_lock);
|
||||
|
|
Loading…
Reference in a new issue