Re: [PATCH rdma-next 2/2] RDMA/uverbs: Add an ioctl method to destroy an object

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Dec 04, 2018 at 02:22:52PM +0000, Parav Pandit wrote:
> Hi Leon,
>
> > -----Original Message-----
> > From: Leon Romanovsky <leon@xxxxxxxxxx>
> > Sent: Friday, November 30, 2018 5:17 AM
> > To: Doug Ledford <dledford@xxxxxxxxxx>; Jason Gunthorpe
> > <jgg@xxxxxxxxxxxx>
> > Cc: Leon Romanovsky <leonro@xxxxxxxxxxxx>; RDMA mailing list <linux-
> > rdma@xxxxxxxxxxxxxxx>; Parav Pandit <parav@xxxxxxxxxxxx>
> > Subject: [PATCH rdma-next 2/2] RDMA/uverbs: Add an ioctl method to
> > destroy an object
> >
> > From: Parav Pandit <parav@xxxxxxxxxxxx>
> >
> > Add an ioctl method to destroy following objects by its handle which doesn't
> > require any output response during destruction.
> > Objects: PD, MR, MW, AH, flow, RWQ indirection table and XRCD.
> >
> > Signed-off-by: Parav Pandit <parav@xxxxxxxxxxxx>
> > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx>
> > ---
> >  drivers/infiniband/core/uverbs_std_types.c    | 60 +++++++++++++++++--
> >  drivers/infiniband/core/uverbs_std_types_mr.c | 10 +++-
> >  include/uapi/rdma/ib_user_ioctl_cmds.h        | 52 ++++++++++++++++
> >  3 files changed, 115 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/infiniband/core/uverbs_std_types.c
> > b/drivers/infiniband/core/uverbs_std_types.c
> > index 8db5d23ca087..f6e132405112 100644
> > --- a/drivers/infiniband/core/uverbs_std_types.c
> > +++ b/drivers/infiniband/core/uverbs_std_types.c
> > @@ -228,36 +228,84 @@ DECLARE_UVERBS_NAMED_OBJECT(
> >  	UVERBS_OBJECT_QP,
> >  	UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uqp_object),
> > uverbs_free_qp));
> >
> > +DECLARE_UVERBS_NAMED_METHOD_DESTROY(
> > +	UVERBS_METHOD_MW_DESTROY,
> > +	UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_MW_HANDLE,
> > +			UVERBS_OBJECT_MW,
> > +			UVERBS_ACCESS_DESTROY,
> > +			UA_MANDATORY));
> > +
> >  DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_MW,
> > -			    UVERBS_TYPE_ALLOC_IDR(uverbs_free_mw));
> > +			    UVERBS_TYPE_ALLOC_IDR(uverbs_free_mw),
> > +
> > &UVERBS_METHOD(UVERBS_METHOD_MW_DESTROY));
> >
> >  DECLARE_UVERBS_NAMED_OBJECT(
> >  	UVERBS_OBJECT_SRQ,
> >  	UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_usrq_object),
> >  				 uverbs_free_srq));
> >
> > +DECLARE_UVERBS_NAMED_METHOD_DESTROY(
> > +	UVERBS_METHOD_AH_DESTROY,
> > +	UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_AH_HANDLE,
> > +			UVERBS_OBJECT_AH,
> > +			UVERBS_ACCESS_DESTROY,
> > +			UA_MANDATORY));
> > +
> >  DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_AH,
> > -			    UVERBS_TYPE_ALLOC_IDR(uverbs_free_ah));
> > +			    UVERBS_TYPE_ALLOC_IDR(uverbs_free_ah),
> > +
> > &UVERBS_METHOD(UVERBS_METHOD_AH_DESTROY));
> > +
> > +DECLARE_UVERBS_NAMED_METHOD_DESTROY(
> > +	UVERBS_METHOD_FLOW_DESTROY,
> > +	UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_FLOW_HANDLE,
> > +			UVERBS_OBJECT_FLOW,
> > +			UVERBS_ACCESS_DESTROY,
> > +			UA_MANDATORY));
> >
> >  DECLARE_UVERBS_NAMED_OBJECT(
> >  	UVERBS_OBJECT_FLOW,
> >  	UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uflow_object),
> > -				 uverbs_free_flow));
> > +				 uverbs_free_flow),
> > +
> > &UVERBS_METHOD(UVERBS_METHOD_FLOW_DESTROY));
> >
> >  DECLARE_UVERBS_NAMED_OBJECT(
> >  	UVERBS_OBJECT_WQ,
> >  	UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uwq_object),
> > uverbs_free_wq));
> >
> > +DECLARE_UVERBS_NAMED_METHOD_DESTROY(
> > +	UVERBS_METHOD_RWQ_IND_TBL_DESTROY,
> > +	UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_RWQ_IND_TBL_HANDLE,
> > +			UVERBS_OBJECT_RWQ_IND_TBL,
> > +			UVERBS_ACCESS_DESTROY,
> > +			UA_MANDATORY));
> > +
> >  DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_RWQ_IND_TBL,
> > -
> > UVERBS_TYPE_ALLOC_IDR(uverbs_free_rwq_ind_tbl));
> > +
> > UVERBS_TYPE_ALLOC_IDR(uverbs_free_rwq_ind_tbl),
> > +
> > &UVERBS_METHOD(UVERBS_METHOD_RWQ_IND_TBL_DESTROY));
> > +
> > +DECLARE_UVERBS_NAMED_METHOD_DESTROY(
> > +	UVERBS_METHOD_XRCD_DESTROY,
> > +	UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_XRCD_HANDLE,
> > +			UVERBS_OBJECT_XRCD,
> > +			UVERBS_ACCESS_DESTROY,
> > +			UA_MANDATORY));
> >
> >  DECLARE_UVERBS_NAMED_OBJECT(
> >  	UVERBS_OBJECT_XRCD,
> >  	UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uxrcd_object),
> > -				 uverbs_free_xrcd));
> > +				 uverbs_free_xrcd),
> > +
> > &UVERBS_METHOD(UVERBS_METHOD_XRCD_DESTROY));
> > +
> > +DECLARE_UVERBS_NAMED_METHOD_DESTROY(
> > +	UVERBS_METHOD_PD_DESTROY,
> > +	UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_PD_HANDLE,
> > +			UVERBS_OBJECT_PD,
> > +			UVERBS_ACCESS_DESTROY,
> > +			UA_MANDATORY));
> >
> >  DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_PD,
> > -			    UVERBS_TYPE_ALLOC_IDR(uverbs_free_pd));
> > +			    UVERBS_TYPE_ALLOC_IDR(uverbs_free_pd),
> > +
> > &UVERBS_METHOD(UVERBS_METHOD_PD_DESTROY));
> >
> >  const struct uapi_definition uverbs_def_obj_intf[] = {
> >  	UAPI_DEF_CHAIN_OBJ_TREE_NAMED(UVERBS_OBJECT_PD,
> > diff --git a/drivers/infiniband/core/uverbs_std_types_mr.c
> > b/drivers/infiniband/core/uverbs_std_types_mr.c
> > index 0057ac3b507d..4c7aa87d3cb8 100644
> > --- a/drivers/infiniband/core/uverbs_std_types_mr.c
> > +++ b/drivers/infiniband/core/uverbs_std_types_mr.c
> > @@ -197,11 +197,19 @@ DECLARE_UVERBS_NAMED_METHOD(
> >  			    UVERBS_ATTR_TYPE(u32),
> >  			    UA_MANDATORY));
> >
> > +DECLARE_UVERBS_NAMED_METHOD_DESTROY(
> > +	UVERBS_METHOD_MR_DESTROY,
> > +	UVERBS_ATTR_IDR(UVERBS_ATTR_DESTROY_MR_HANDLE,
> > +			UVERBS_OBJECT_MR,
> > +			UVERBS_ACCESS_DESTROY,
> > +			UA_MANDATORY));
> > +
> >  DECLARE_UVERBS_NAMED_OBJECT(
> >  	UVERBS_OBJECT_MR,
> >  	UVERBS_TYPE_ALLOC_IDR(uverbs_free_mr),
> >  	&UVERBS_METHOD(UVERBS_METHOD_ADVISE_MR),
> > -	&UVERBS_METHOD(UVERBS_METHOD_DM_MR_REG));
> > +	&UVERBS_METHOD(UVERBS_METHOD_DM_MR_REG),
> > +	&UVERBS_METHOD(UVERBS_METHOD_MR_DESTROY));
> >
> >  const struct uapi_definition uverbs_def_obj_mr[] = {
> >  	UAPI_DEF_CHAIN_OBJ_TREE_NAMED(UVERBS_OBJECT_MR,
> > diff --git a/include/uapi/rdma/ib_user_ioctl_cmds.h
> > b/include/uapi/rdma/ib_user_ioctl_cmds.h
> > index d83de187c112..5e5d962aa17d 100644
> > --- a/include/uapi/rdma/ib_user_ioctl_cmds.h
> > +++ b/include/uapi/rdma/ib_user_ioctl_cmds.h
> > @@ -154,6 +154,11 @@ enum uverbs_attrs_advise_mr_cmd_attr_ids {
> > enum uverbs_methods_mr {
> >  	UVERBS_METHOD_DM_MR_REG,
> >  	UVERBS_METHOD_ADVISE_MR,
> > +	UVERBS_METHOD_MR_DESTROY,
> > +};
> You posted my patches first. In tree Moni's patches were present before me.
> So these patches needs to apply in same order or Jason need to resolve merge conflicts.

Moni's patches are based on latest rdma-next and because Yishai is going
to send rdma-core part very soon they will be applied before yours.

Thanks

>

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux