diff options
author | Vladyslav Tarasiuk <vladyslavt@mellanox.com> | 2020-07-10 15:25:09 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-07-10 14:32:02 -0700 |
commit | bd8210055c36a453358d75017dce7522d950dd38 (patch) | |
tree | d11117c01d7a7f5d06979d43bd37db1602364289 /net/core/devlink.c | |
parent | 3c5584bf0a0493e8d232ade65f4b9c5e995f3a0c (diff) | |
download | linux-bd8210055c36a453358d75017dce7522d950dd38.tar.gz linux-bd8210055c36a453358d75017dce7522d950dd38.tar.bz2 linux-bd8210055c36a453358d75017dce7522d950dd38.zip |
devlink: Create generic devlink health reporter search function
Add a generic __devlink_health_reporter_find_by_name() that can be used
with arbitrary devlink health reporter list.
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>
Diffstat (limited to 'net/core/devlink.c')
-rw-r--r-- | net/core/devlink.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/net/core/devlink.c b/net/core/devlink.c index b85f2113398d..4e995de65b36 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -5309,19 +5309,29 @@ devlink_health_reporter_priv(struct devlink_health_reporter *reporter) EXPORT_SYMBOL_GPL(devlink_health_reporter_priv); static struct devlink_health_reporter * -devlink_health_reporter_find_by_name(struct devlink *devlink, - const char *reporter_name) +__devlink_health_reporter_find_by_name(struct list_head *reporter_list, + struct mutex *list_lock, + const char *reporter_name) { struct devlink_health_reporter *reporter; - lockdep_assert_held(&devlink->reporters_lock); - list_for_each_entry(reporter, &devlink->reporter_list, list) + lockdep_assert_held(list_lock); + list_for_each_entry(reporter, reporter_list, list) if (!strcmp(reporter->ops->name, reporter_name)) return reporter; return NULL; } static struct devlink_health_reporter * +devlink_health_reporter_find_by_name(struct devlink *devlink, + const char *reporter_name) +{ + return __devlink_health_reporter_find_by_name(&devlink->reporter_list, + &devlink->reporters_lock, + reporter_name); +} + +static struct devlink_health_reporter * __devlink_health_reporter_create(struct devlink *devlink, const struct devlink_health_reporter_ops *ops, u64 graceful_period, void *priv) |