>-----Original Message----- >From: Jason Gunthorpe [mailto:jgg@xxxxxxxxxxxx] >Sent: Tuesday, November 20, 2018 10:54 AM >To: Ruhl, Michael J <michael.j.ruhl@xxxxxxxxx> >Cc: Leon Romanovsky <leon@xxxxxxxxxx>; Doug Ledford ><dledford@xxxxxxxxxx>; Leon Romanovsky <leonro@xxxxxxxxxxxx>; RDMA >mailing list <linux-rdma@xxxxxxxxxxxxxxx> >Subject: Re: [PATCH rdma-next 03/10] RDMA/uverbs: Replace ib_uverbs_file >with uverbs_attr_bundle for write > >On Tue, Nov 20, 2018 at 03:47:38PM +0000, Ruhl, Michael J wrote: >> >From: linux-rdma-owner@xxxxxxxxxxxxxxx [mailto:linux-rdma- >> >owner@xxxxxxxxxxxxxxx] On Behalf Of Leon Romanovsky >> >Sent: Monday, November 19, 2018 3:11 AM >> >To: Doug Ledford <dledford@xxxxxxxxxx>; Jason Gunthorpe >> ><jgg@xxxxxxxxxxxx> >> >Cc: Leon Romanovsky <leonro@xxxxxxxxxxxx>; RDMA mailing list <linux- >> >rdma@xxxxxxxxxxxxxxx> >> >Subject: [PATCH rdma-next 03/10] RDMA/uverbs: Replace ib_uverbs_file >with >> >uverbs_attr_bundle for write >> > >> >From: Jason Gunthorpe <jgg@xxxxxxxxxxxx> >> > >> >Now that we can add meta-data to the description of write() methods we >> >need to pass the uverbs_attr_bundle into all write based handlers so >> >future patches can use it as a container for any new data transferred out >> >of the core. >> > >> >This is the first step to bringing the write() and ioctl() methods to a >> >common interface signature. >> > >> >This is a simple search/replace, and we push the attr down into the uobj >> >and other APIs to keep changes minimal. >> > >> >Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxxxx> >> >Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> >> > drivers/infiniband/core/rdma_core.c | 13 +- >> > drivers/infiniband/core/rdma_core.h | 8 +- >> > drivers/infiniband/core/uverbs_cmd.c | 301 +++++++++++++------------- >> > drivers/infiniband/core/uverbs_main.c | 12 +- >> > drivers/infiniband/core/uverbs_uapi.c | 4 +- >> > drivers/infiniband/hw/mlx5/devx.c | 2 +- >> > include/rdma/ib_verbs.h | 2 +- >> > include/rdma/uverbs_ioctl.h | 10 +- >> > include/rdma/uverbs_std_types.h | 48 ++-- >> > 9 files changed, 208 insertions(+), 192 deletions(-) >> > >> >diff --git a/drivers/infiniband/core/rdma_core.c >> >b/drivers/infiniband/core/rdma_core.c >> >index 752a55c6bdce..cf671a643d4c 100644 >> >+++ b/drivers/infiniband/core/rdma_core.c >> >@@ -224,12 +224,14 @@ int uobj_destroy(struct ib_uobject *uobj) >> > * uverbs_put_destroy. >> > */ >> > struct ib_uobject *__uobj_get_destroy(const struct uverbs_api_object >*obj, >> >- u32 id, struct ib_uverbs_file *ufile) >> >+ u32 id, >> >+ const struct uverbs_attr_bundle *attrs) >> > { >> > struct ib_uobject *uobj; >> > int ret; >> > >> >- uobj = rdma_lookup_get_uobject(obj, ufile, id, >> >UVERBS_LOOKUP_DESTROY); >> >+ uobj = rdma_lookup_get_uobject(obj, attrs->ufile, id, >> >+ UVERBS_LOOKUP_DESTROY); >> >> Is there a reason that you didn't push attrs into >rdma_lookup_get_uobject()? > >Not really.. In this case only uobj_* is being called from the write() >handlers so I stopped pushing at that layer. It makes some sense that >the rdma_* layer is more general than the uobj_* layer, but it could >also be argued the other way. Got it. >There are a lot of places where attr_bundle should be pushed down >into, particularly into drivers. I was expecting all of that to be its >own series. This thing is already very big. Yeah, still wading through them. :) M >> Reviewed-by: Mike Ruhl <michael.j.ruhl@xxxxxxxxx> > >Thanks > >Jason