Message ID | 20190612122741.22850-1-leon@kernel.org (mailing list archive) |
---|---|
State | Mainlined |
Commit | a49b1dc7ae447d7085360cd587fc1c8b9ec6c871 |
Delegated to: | Doug Ledford |
Headers | show |
Series | [rdma-next] RDMA: Convert destroy_wq to be void | expand |
On Wed, Jun 12, 2019 at 03:27:41PM +0300, Leon Romanovsky wrote: > From: Leon Romanovsky <leonro@mellanox.com> > > All callers of destroy WQ are always success and there is no need > to check their return value, so convert destroy_wq to be void. > > Signed-off-by: Leon Romanovsky <leonro@mellanox.com> > --- > drivers/infiniband/core/verbs.c | 12 +++++------- > drivers/infiniband/hw/mlx4/mlx4_ib.h | 2 +- > drivers/infiniband/hw/mlx4/qp.c | 4 +--- > drivers/infiniband/hw/mlx5/mlx5_ib.h | 2 +- > drivers/infiniband/hw/mlx5/qp.c | 4 +--- > include/rdma/ib_verbs.h | 2 +- > 6 files changed, 10 insertions(+), 16 deletions(-) > > diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c > index 2fb834bb146c..d55f491be24f 100644 > --- a/drivers/infiniband/core/verbs.c > +++ b/drivers/infiniband/core/verbs.c > @@ -2344,19 +2344,17 @@ EXPORT_SYMBOL(ib_create_wq); > */ > int ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata) So why this one left out of this change? > { > - int err; > struct ib_cq *cq = wq->cq; > struct ib_pd *pd = wq->pd; > > if (atomic_read(&wq->usecnt)) > return -EBUSY; > > - err = wq->device->ops.destroy_wq(wq, udata); > - if (!err) { > - atomic_dec(&pd->usecnt); > - atomic_dec(&cq->usecnt); > - } > - return err; > + wq->device->ops.destroy_wq(wq, udata); > + atomic_dec(&pd->usecnt); > + atomic_dec(&cq->usecnt); > + > + return 0; > } > EXPORT_SYMBOL(ib_destroy_wq); > > diff --git a/drivers/infiniband/hw/mlx4/mlx4_ib.h b/drivers/infiniband/hw/mlx4/mlx4_ib.h > index 81b3d85e5167..eb53bb4c0c91 100644 > --- a/drivers/infiniband/hw/mlx4/mlx4_ib.h > +++ b/drivers/infiniband/hw/mlx4/mlx4_ib.h > @@ -906,7 +906,7 @@ void mlx4_ib_sl2vl_update(struct mlx4_ib_dev *mdev, int port); > struct ib_wq *mlx4_ib_create_wq(struct ib_pd *pd, > struct ib_wq_init_attr *init_attr, > struct ib_udata *udata); > -int mlx4_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata); > +void mlx4_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata); > int mlx4_ib_modify_wq(struct ib_wq *wq, struct ib_wq_attr *wq_attr, > u32 wq_attr_mask, struct ib_udata *udata); > > diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c > index 5221c0794d1d..520364defa28 100644 > --- a/drivers/infiniband/hw/mlx4/qp.c > +++ b/drivers/infiniband/hw/mlx4/qp.c > @@ -4248,7 +4248,7 @@ int mlx4_ib_modify_wq(struct ib_wq *ibwq, struct ib_wq_attr *wq_attr, > return err; > } > > -int mlx4_ib_destroy_wq(struct ib_wq *ibwq, struct ib_udata *udata) > +void mlx4_ib_destroy_wq(struct ib_wq *ibwq, struct ib_udata *udata) > { > struct mlx4_ib_dev *dev = to_mdev(ibwq->device); > struct mlx4_ib_qp *qp = to_mqp((struct ib_qp *)ibwq); > @@ -4259,8 +4259,6 @@ int mlx4_ib_destroy_wq(struct ib_wq *ibwq, struct ib_udata *udata) > destroy_qp_common(dev, qp, MLX4_IB_RWQ_SRC, udata); > > kfree(qp); > - > - return 0; > } > > struct ib_rwq_ind_table > diff --git a/drivers/infiniband/hw/mlx5/mlx5_ib.h b/drivers/infiniband/hw/mlx5/mlx5_ib.h > index b256100d1e52..0bfc14ff8aed 100644 > --- a/drivers/infiniband/hw/mlx5/mlx5_ib.h > +++ b/drivers/infiniband/hw/mlx5/mlx5_ib.h > @@ -1222,7 +1222,7 @@ int mlx5_ib_check_mr_status(struct ib_mr *ibmr, u32 check_mask, > struct ib_wq *mlx5_ib_create_wq(struct ib_pd *pd, > struct ib_wq_init_attr *init_attr, > struct ib_udata *udata); > -int mlx5_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata); > +void mlx5_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata); > int mlx5_ib_modify_wq(struct ib_wq *wq, struct ib_wq_attr *wq_attr, > u32 wq_attr_mask, struct ib_udata *udata); > struct ib_rwq_ind_table *mlx5_ib_create_rwq_ind_table(struct ib_device *device, > diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c > index cbd63ea41347..63d8f61e50e0 100644 > --- a/drivers/infiniband/hw/mlx5/qp.c > +++ b/drivers/infiniband/hw/mlx5/qp.c > @@ -6161,7 +6161,7 @@ struct ib_wq *mlx5_ib_create_wq(struct ib_pd *pd, > return ERR_PTR(err); > } > > -int mlx5_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata) > +void mlx5_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata) > { > struct mlx5_ib_dev *dev = to_mdev(wq->device); > struct mlx5_ib_rwq *rwq = to_mrwq(wq); > @@ -6169,8 +6169,6 @@ int mlx5_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata) > mlx5_core_destroy_rq_tracked(dev->mdev, &rwq->core_qp); > destroy_user_rq(dev, wq->pd, rwq, udata); > kfree(rwq); > - > - return 0; > } > > struct ib_rwq_ind_table *mlx5_ib_create_rwq_ind_table(struct ib_device *device, > diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h > index 255999488693..d902ff49b56e 100644 > --- a/include/rdma/ib_verbs.h > +++ b/include/rdma/ib_verbs.h > @@ -2428,7 +2428,7 @@ struct ib_device_ops { > struct ib_wq *(*create_wq)(struct ib_pd *pd, > struct ib_wq_init_attr *init_attr, > struct ib_udata *udata); > - int (*destroy_wq)(struct ib_wq *wq, struct ib_udata *udata); > + void (*destroy_wq)(struct ib_wq *wq, struct ib_udata *udata); > int (*modify_wq)(struct ib_wq *wq, struct ib_wq_attr *attr, > u32 wq_attr_mask, struct ib_udata *udata); > struct ib_rwq_ind_table *(*create_rwq_ind_table)( > -- > 2.20.1 >
On Wed, Jun 12, 2019 at 03:40:50PM +0300, Yuval Shaia wrote: > On Wed, Jun 12, 2019 at 03:27:41PM +0300, Leon Romanovsky wrote: > > From: Leon Romanovsky <leonro@mellanox.com> > > > > All callers of destroy WQ are always success and there is no need > > to check their return value, so convert destroy_wq to be void. > > > > Signed-off-by: Leon Romanovsky <leonro@mellanox.com> > > --- > > drivers/infiniband/core/verbs.c | 12 +++++------- > > drivers/infiniband/hw/mlx4/mlx4_ib.h | 2 +- > > drivers/infiniband/hw/mlx4/qp.c | 4 +--- > > drivers/infiniband/hw/mlx5/mlx5_ib.h | 2 +- > > drivers/infiniband/hw/mlx5/qp.c | 4 +--- > > include/rdma/ib_verbs.h | 2 +- > > 6 files changed, 10 insertions(+), 16 deletions(-) > > > > diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c > > index 2fb834bb146c..d55f491be24f 100644 > > --- a/drivers/infiniband/core/verbs.c > > +++ b/drivers/infiniband/core/verbs.c > > @@ -2344,19 +2344,17 @@ EXPORT_SYMBOL(ib_create_wq); > > */ > > int ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata) > > So why this one left out of this change? This function can return -EBUSY. > > > { > > - int err; > > struct ib_cq *cq = wq->cq; > > struct ib_pd *pd = wq->pd; > > > > if (atomic_read(&wq->usecnt)) > > return -EBUSY; Thanks
On Wed, Jun 12, 2019 at 03:51:12PM +0300, Leon Romanovsky wrote: > On Wed, Jun 12, 2019 at 03:40:50PM +0300, Yuval Shaia wrote: > > On Wed, Jun 12, 2019 at 03:27:41PM +0300, Leon Romanovsky wrote: > > > From: Leon Romanovsky <leonro@mellanox.com> > > > > > > All callers of destroy WQ are always success and there is no need > > > to check their return value, so convert destroy_wq to be void. > > > > > > Signed-off-by: Leon Romanovsky <leonro@mellanox.com> > > > --- > > > drivers/infiniband/core/verbs.c | 12 +++++------- > > > drivers/infiniband/hw/mlx4/mlx4_ib.h | 2 +- > > > drivers/infiniband/hw/mlx4/qp.c | 4 +--- > > > drivers/infiniband/hw/mlx5/mlx5_ib.h | 2 +- > > > drivers/infiniband/hw/mlx5/qp.c | 4 +--- > > > include/rdma/ib_verbs.h | 2 +- > > > 6 files changed, 10 insertions(+), 16 deletions(-) > > > > > > diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c > > > index 2fb834bb146c..d55f491be24f 100644 > > > --- a/drivers/infiniband/core/verbs.c > > > +++ b/drivers/infiniband/core/verbs.c > > > @@ -2344,19 +2344,17 @@ EXPORT_SYMBOL(ib_create_wq); > > > */ > > > int ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata) > > > > So why this one left out of this change? > > This function can return -EBUSY. Missed that. > > > > > > { > > > - int err; > > > struct ib_cq *cq = wq->cq; > > > struct ib_pd *pd = wq->pd; > > > > > > if (atomic_read(&wq->usecnt)) > > > return -EBUSY; > > Thanks Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
On Wed, 2019-06-12 at 15:55 +0300, Yuval Shaia wrote: > On Wed, Jun 12, 2019 at 03:51:12PM +0300, Leon Romanovsky wrote: > > On Wed, Jun 12, 2019 at 03:40:50PM +0300, Yuval Shaia wrote: > > > On Wed, Jun 12, 2019 at 03:27:41PM +0300, Leon Romanovsky wrote: > > > > From: Leon Romanovsky <leonro@mellanox.com> > > > > > > > > All callers of destroy WQ are always success and there is no > > > > need > > > > to check their return value, so convert destroy_wq to be void. > > > > > > > > Signed-off-by: Leon Romanovsky <leonro@mellanox.com> > > > > --- > > > > drivers/infiniband/core/verbs.c | 12 +++++------- > > > > drivers/infiniband/hw/mlx4/mlx4_ib.h | 2 +- > > > > drivers/infiniband/hw/mlx4/qp.c | 4 +--- > > > > drivers/infiniband/hw/mlx5/mlx5_ib.h | 2 +- > > > > drivers/infiniband/hw/mlx5/qp.c | 4 +--- > > > > include/rdma/ib_verbs.h | 2 +- > > > > 6 files changed, 10 insertions(+), 16 deletions(-) > > > > > > > > diff --git a/drivers/infiniband/core/verbs.c > > > > b/drivers/infiniband/core/verbs.c > > > > index 2fb834bb146c..d55f491be24f 100644 > > > > --- a/drivers/infiniband/core/verbs.c > > > > +++ b/drivers/infiniband/core/verbs.c > > > > @@ -2344,19 +2344,17 @@ EXPORT_SYMBOL(ib_create_wq); > > > > */ > > > > int ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata) > > > > > > So why this one left out of this change? > > > > This function can return -EBUSY. > > Missed that. > > > > > { > > > > - int err; > > > > struct ib_cq *cq = wq->cq; > > > > struct ib_pd *pd = wq->pd; > > > > > > > > if (atomic_read(&wq->usecnt)) > > > > return -EBUSY; > > > > Thanks > > Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com> > Applied to for-next, thanks.
diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c index 2fb834bb146c..d55f491be24f 100644 --- a/drivers/infiniband/core/verbs.c +++ b/drivers/infiniband/core/verbs.c @@ -2344,19 +2344,17 @@ EXPORT_SYMBOL(ib_create_wq); */ int ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata) { - int err; struct ib_cq *cq = wq->cq; struct ib_pd *pd = wq->pd; if (atomic_read(&wq->usecnt)) return -EBUSY; - err = wq->device->ops.destroy_wq(wq, udata); - if (!err) { - atomic_dec(&pd->usecnt); - atomic_dec(&cq->usecnt); - } - return err; + wq->device->ops.destroy_wq(wq, udata); + atomic_dec(&pd->usecnt); + atomic_dec(&cq->usecnt); + + return 0; } EXPORT_SYMBOL(ib_destroy_wq); diff --git a/drivers/infiniband/hw/mlx4/mlx4_ib.h b/drivers/infiniband/hw/mlx4/mlx4_ib.h index 81b3d85e5167..eb53bb4c0c91 100644 --- a/drivers/infiniband/hw/mlx4/mlx4_ib.h +++ b/drivers/infiniband/hw/mlx4/mlx4_ib.h @@ -906,7 +906,7 @@ void mlx4_ib_sl2vl_update(struct mlx4_ib_dev *mdev, int port); struct ib_wq *mlx4_ib_create_wq(struct ib_pd *pd, struct ib_wq_init_attr *init_attr, struct ib_udata *udata); -int mlx4_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata); +void mlx4_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata); int mlx4_ib_modify_wq(struct ib_wq *wq, struct ib_wq_attr *wq_attr, u32 wq_attr_mask, struct ib_udata *udata); diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c index 5221c0794d1d..520364defa28 100644 --- a/drivers/infiniband/hw/mlx4/qp.c +++ b/drivers/infiniband/hw/mlx4/qp.c @@ -4248,7 +4248,7 @@ int mlx4_ib_modify_wq(struct ib_wq *ibwq, struct ib_wq_attr *wq_attr, return err; } -int mlx4_ib_destroy_wq(struct ib_wq *ibwq, struct ib_udata *udata) +void mlx4_ib_destroy_wq(struct ib_wq *ibwq, struct ib_udata *udata) { struct mlx4_ib_dev *dev = to_mdev(ibwq->device); struct mlx4_ib_qp *qp = to_mqp((struct ib_qp *)ibwq); @@ -4259,8 +4259,6 @@ int mlx4_ib_destroy_wq(struct ib_wq *ibwq, struct ib_udata *udata) destroy_qp_common(dev, qp, MLX4_IB_RWQ_SRC, udata); kfree(qp); - - return 0; } struct ib_rwq_ind_table diff --git a/drivers/infiniband/hw/mlx5/mlx5_ib.h b/drivers/infiniband/hw/mlx5/mlx5_ib.h index b256100d1e52..0bfc14ff8aed 100644 --- a/drivers/infiniband/hw/mlx5/mlx5_ib.h +++ b/drivers/infiniband/hw/mlx5/mlx5_ib.h @@ -1222,7 +1222,7 @@ int mlx5_ib_check_mr_status(struct ib_mr *ibmr, u32 check_mask, struct ib_wq *mlx5_ib_create_wq(struct ib_pd *pd, struct ib_wq_init_attr *init_attr, struct ib_udata *udata); -int mlx5_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata); +void mlx5_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata); int mlx5_ib_modify_wq(struct ib_wq *wq, struct ib_wq_attr *wq_attr, u32 wq_attr_mask, struct ib_udata *udata); struct ib_rwq_ind_table *mlx5_ib_create_rwq_ind_table(struct ib_device *device, diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c index cbd63ea41347..63d8f61e50e0 100644 --- a/drivers/infiniband/hw/mlx5/qp.c +++ b/drivers/infiniband/hw/mlx5/qp.c @@ -6161,7 +6161,7 @@ struct ib_wq *mlx5_ib_create_wq(struct ib_pd *pd, return ERR_PTR(err); } -int mlx5_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata) +void mlx5_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata) { struct mlx5_ib_dev *dev = to_mdev(wq->device); struct mlx5_ib_rwq *rwq = to_mrwq(wq); @@ -6169,8 +6169,6 @@ int mlx5_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata) mlx5_core_destroy_rq_tracked(dev->mdev, &rwq->core_qp); destroy_user_rq(dev, wq->pd, rwq, udata); kfree(rwq); - - return 0; } struct ib_rwq_ind_table *mlx5_ib_create_rwq_ind_table(struct ib_device *device, diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 255999488693..d902ff49b56e 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -2428,7 +2428,7 @@ struct ib_device_ops { struct ib_wq *(*create_wq)(struct ib_pd *pd, struct ib_wq_init_attr *init_attr, struct ib_udata *udata); - int (*destroy_wq)(struct ib_wq *wq, struct ib_udata *udata); + void (*destroy_wq)(struct ib_wq *wq, struct ib_udata *udata); int (*modify_wq)(struct ib_wq *wq, struct ib_wq_attr *attr, u32 wq_attr_mask, struct ib_udata *udata); struct ib_rwq_ind_table *(*create_rwq_ind_table)(