Message ID | 20221128204256.1200695-1-jacob.e.keller@intel.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | David Ahern |
Headers | show |
Series | [iproute2-next] devlink: support direct region read requests | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
> diff --git a/devlink/devlink.c b/devlink/devlink.c > index 8aefa101b2f8..5057b09505ef 100644 > --- a/devlink/devlink.c > +++ b/devlink/devlink.c > @@ -8535,11 +8535,15 @@ static int cmd_region_read(struct dl *dl) > int err; > > err = dl_argv_parse(dl, DL_OPT_HANDLE_REGION | DL_OPT_REGION_ADDRESS | > - DL_OPT_REGION_LENGTH | DL_OPT_REGION_SNAPSHOT_ID, > - 0); > + DL_OPT_REGION_LENGTH, > + DL_OPT_REGION_SNAPSHOT_ID); > if (err) > return err; > > + /* If user didn't provide a snapshot id, perform a direct read */ > + if (!(dl->opts.present & DL_OPT_REGION_SNAPSHOT_ID)) > + mnl_attr_put(nlh, DEVLINK_ATTR_REGION_DIRECT, 0, NULL); > + > nlh = mnlu_gen_socket_cmd_prepare(&dl->nlg, DEVLINK_CMD_REGION_READ, > NLM_F_REQUEST | NLM_F_ACK | NLM_F_DUMP); > > > base-commit: 2ed09c3bf8aca185b2f3eb369ae435503f9b9826 > -- > 2.38.1.420.g319605f8f00e > This introduces a compile warning: devlink.c: In function ‘dl_cmd’: devlink.c:8613:3: warning: ‘nlh’ may be used uninitialized in this function [-Wmaybe-uninitialized] 8613 | mnl_attr_put(nlh, DEVLINK_ATTR_REGION_DIRECT, 0, NULL); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ devlink.c:8602:19: note: ‘nlh’ was declared here and always add maintainers to iproute2 patches.
diff --git a/devlink/devlink.c b/devlink/devlink.c index 8aefa101b2f8..5057b09505ef 100644 --- a/devlink/devlink.c +++ b/devlink/devlink.c @@ -8535,11 +8535,15 @@ static int cmd_region_read(struct dl *dl) int err; err = dl_argv_parse(dl, DL_OPT_HANDLE_REGION | DL_OPT_REGION_ADDRESS | - DL_OPT_REGION_LENGTH | DL_OPT_REGION_SNAPSHOT_ID, - 0); + DL_OPT_REGION_LENGTH, + DL_OPT_REGION_SNAPSHOT_ID); if (err) return err; + /* If user didn't provide a snapshot id, perform a direct read */ + if (!(dl->opts.present & DL_OPT_REGION_SNAPSHOT_ID)) + mnl_attr_put(nlh, DEVLINK_ATTR_REGION_DIRECT, 0, NULL); + nlh = mnlu_gen_socket_cmd_prepare(&dl->nlg, DEVLINK_CMD_REGION_READ, NLM_F_REQUEST | NLM_F_ACK | NLM_F_DUMP);
The kernel has gained support for reading from regions without needing to create a snapshot. To use this support, the DEVLINK_ATTR_REGION_DIRECT attribute must be added to the command. For the "read" command, if the user did not specify a snapshot, add the new attribute to request a direct read. The "dump" command will still require a snapshot. While technically a dump could be performed without a snapshot it is not guaranteed to be atomic unless the region size is no larger than 256 bytes. Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> --- This depends on https://lore.kernel.org/netdev/20221128203647.1198669-1-jacob.e.keller@intel.com/T/#t devlink/devlink.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) base-commit: 2ed09c3bf8aca185b2f3eb369ae435503f9b9826