2022-07-08 17:10:34

by Christophe JAILLET

[permalink] [raw]
Subject: [PATCH 1/2] RDMA/rtrs-clt: Use the bitmap API to allocate bitmaps

Use bitmap_zalloc()/bitmap_free() instead of hand-writing them.

It is less verbose and it improves the semantic.

Signed-off-by: Christophe JAILLET <[email protected]>
---
drivers/infiniband/ulp/rtrs/rtrs-clt.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
index 9809c3883979..06c27a3d83f5 100644
--- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c
+++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
@@ -1403,8 +1403,7 @@ static int alloc_permits(struct rtrs_clt_sess *clt)
unsigned int chunk_bits;
int err, i;

- clt->permits_map = kcalloc(BITS_TO_LONGS(clt->queue_depth),
- sizeof(long), GFP_KERNEL);
+ clt->permits_map = bitmap_zalloc(clt->queue_depth, GFP_KERNEL);
if (!clt->permits_map) {
err = -ENOMEM;
goto out_err;
@@ -1426,7 +1425,7 @@ static int alloc_permits(struct rtrs_clt_sess *clt)
return 0;

err_map:
- kfree(clt->permits_map);
+ bitmap_free(clt->permits_map);
clt->permits_map = NULL;
out_err:
return err;
@@ -1440,7 +1439,7 @@ static void free_permits(struct rtrs_clt_sess *clt)
wait_event(clt->permits_wait,
find_first_bit(clt->permits_map, sz) >= sz);
}
- kfree(clt->permits_map);
+ bitmap_free(clt->permits_map);
clt->permits_map = NULL;
kfree(clt->permits);
clt->permits = NULL;
--
2.34.1


2022-07-08 17:26:59

by Christophe JAILLET

[permalink] [raw]
Subject: [PATCH 2/2] RDMA/rtrs-clt: Use bitmap_empty()

Use bitmap_empty() instead of hand-writing them.

Signed-off-by: Christophe JAILLET <[email protected]>
---
drivers/infiniband/ulp/rtrs/rtrs-clt.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
index 06c27a3d83f5..8441f0965b56 100644
--- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c
+++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
@@ -1433,12 +1433,10 @@ static int alloc_permits(struct rtrs_clt_sess *clt)

static void free_permits(struct rtrs_clt_sess *clt)
{
- if (clt->permits_map) {
- size_t sz = clt->queue_depth;
-
+ if (clt->permits_map)
wait_event(clt->permits_wait,
- find_first_bit(clt->permits_map, sz) >= sz);
- }
+ bitmap_empty(clt->permits_map, clt->queue_depth));
+
bitmap_free(clt->permits_map);
clt->permits_map = NULL;
kfree(clt->permits);
--
2.34.1

2022-07-11 11:40:26

by Jinpu Wang

[permalink] [raw]
Subject: Re: [PATCH 1/2] RDMA/rtrs-clt: Use the bitmap API to allocate bitmaps

On Fri, Jul 8, 2022 at 6:47 PM Christophe JAILLET
<[email protected]> wrote:
>
> Use bitmap_zalloc()/bitmap_free() instead of hand-writing them.
>
> It is less verbose and it improves the semantic.
>
> Signed-off-by: Christophe JAILLET <[email protected]>
Acked-by: Jack Wang <[email protected]>
Thx!
> ---
> drivers/infiniband/ulp/rtrs/rtrs-clt.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
> index 9809c3883979..06c27a3d83f5 100644
> --- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c
> +++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
> @@ -1403,8 +1403,7 @@ static int alloc_permits(struct rtrs_clt_sess *clt)
> unsigned int chunk_bits;
> int err, i;
>
> - clt->permits_map = kcalloc(BITS_TO_LONGS(clt->queue_depth),
> - sizeof(long), GFP_KERNEL);
> + clt->permits_map = bitmap_zalloc(clt->queue_depth, GFP_KERNEL);
> if (!clt->permits_map) {
> err = -ENOMEM;
> goto out_err;
> @@ -1426,7 +1425,7 @@ static int alloc_permits(struct rtrs_clt_sess *clt)
> return 0;
>
> err_map:
> - kfree(clt->permits_map);
> + bitmap_free(clt->permits_map);
> clt->permits_map = NULL;
> out_err:
> return err;
> @@ -1440,7 +1439,7 @@ static void free_permits(struct rtrs_clt_sess *clt)
> wait_event(clt->permits_wait,
> find_first_bit(clt->permits_map, sz) >= sz);
> }
> - kfree(clt->permits_map);
> + bitmap_free(clt->permits_map);
> clt->permits_map = NULL;
> kfree(clt->permits);
> clt->permits = NULL;
> --
> 2.34.1
>

2022-07-11 12:59:55

by Jinpu Wang

[permalink] [raw]
Subject: Re: [PATCH 2/2] RDMA/rtrs-clt: Use bitmap_empty()

On Fri, Jul 8, 2022 at 6:47 PM Christophe JAILLET
<[email protected]> wrote:
>
> Use bitmap_empty() instead of hand-writing them.
>
> Signed-off-by: Christophe JAILLET <[email protected]>
Acked-by: Jack Wang <[email protected]>
Thx!
> ---
> drivers/infiniband/ulp/rtrs/rtrs-clt.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
> index 06c27a3d83f5..8441f0965b56 100644
> --- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c
> +++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
> @@ -1433,12 +1433,10 @@ static int alloc_permits(struct rtrs_clt_sess *clt)
>
> static void free_permits(struct rtrs_clt_sess *clt)
> {
> - if (clt->permits_map) {
> - size_t sz = clt->queue_depth;
> -
> + if (clt->permits_map)
> wait_event(clt->permits_wait,
> - find_first_bit(clt->permits_map, sz) >= sz);
> - }
> + bitmap_empty(clt->permits_map, clt->queue_depth));
> +
> bitmap_free(clt->permits_map);
> clt->permits_map = NULL;
> kfree(clt->permits);
> --
> 2.34.1
>

2022-07-18 09:07:05

by Leon Romanovsky

[permalink] [raw]
Subject: Re: [PATCH 1/2] RDMA/rtrs-clt: Use the bitmap API to allocate bitmaps

On Fri, Jul 08, 2022 at 06:47:27PM +0200, Christophe JAILLET wrote:
> Use bitmap_zalloc()/bitmap_free() instead of hand-writing them.
>
> It is less verbose and it improves the semantic.
>
> Signed-off-by: Christophe JAILLET <[email protected]>
> ---
> drivers/infiniband/ulp/rtrs/rtrs-clt.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>

Thanks, applied