[RFC PATCH v2 18/22] devlink: report extended error message in region_read_dumpit

Jacob Keller
2020-02-14T23:23:00Z

Report extended error details in the devlink_nl_cmd_region_read_dumpit
function, by using the extack structure from the netlink_callback.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
---
net/core/devlink.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/net/core/devlink.c b/net/core/devlink.c
index 60f4d231470e..e81b56f83128 100644
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -4199,8 +4199,14 @@ static int devlink_nl_cmd_region_read_dumpit(struct sk_buff *skb,

mutex_lock(&devlink->lock);

- if (!attrs[DEVLINK_ATTR_REGION_NAME] ||
- !attrs[DEVLINK_ATTR_REGION_SNAPSHOT_ID]) {
+ if (!attrs[DEVLINK_ATTR_REGION_NAME]) {
+ NL_SET_ERR_MSG_MOD(cb->extack, "No region name provided");
+ err = -EINVAL;
+ goto out_unlock;
+ }
+
+ if (!attrs[DEVLINK_ATTR_REGION_SNAPSHOT_ID]) {
+ NL_SET_ERR_MSG_MOD(cb->extack, "No snapshot id provided");
err = -EINVAL;
goto out_unlock;
}
@@ -4208,6 +4214,8 @@ static int devlink_nl_cmd_region_read_dumpit(struct sk_buff *skb,
region_name = nla_data(attrs[DEVLINK_ATTR_REGION_NAME]);
region = devlink_region_get_by_name(devlink, region_name);
if (!region) {
+ NL_SET_ERR_MSG_MOD(cb->extack,
+ "The requested region does not exist");
err = -EINVAL;
goto out_unlock;
}
@@ -4221,6 +4229,8 @@ static int devlink_nl_cmd_region_read_dumpit(struct sk_buff *skb,
snapshot_id = nla_get_u32(attrs[DEVLINK_ATTR_REGION_SNAPSHOT_ID]);
snapshot = devlink_region_snapshot_get_by_id(region, snapshot_id);
if (!snapshot) {
+ NL_SET_ERR_MSG_MOD(cb->extack,
+ "The requested snapshot id does not exist");
err = -EINVAL;
goto out_unlock;
}
--
2.25.0.368.g28a2d05eebfb