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]

 



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.





[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