Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1563675 > unrolled thread

[PATCH] 6lowpan: use rb_entry()

Started byGeliang Tang <geliangtang@gmail.com>
First post2017-01-20 15:50 +0100
Last post2017-01-22 22:50 +0100
Articles 13 — 5 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] 6lowpan: use rb_entry() Geliang Tang <geliangtang@gmail.com> - 2017-01-20 15:50 +0100
    [PATCH] net/mlx4: use rb_entry() Geliang Tang <geliangtang@gmail.com> - 2017-01-20 15:50 +0100
      Re: [PATCH] net/mlx4: use rb_entry() Leon Romanovsky <leon@kernel.org> - 2017-01-22 08:50 +0100
        Re: [PATCH] net/mlx4: use rb_entry() Geliang Tang <geliangtang@gmail.com> - 2017-01-22 15:50 +0100
          Re: [PATCH] net/mlx4: use rb_entry() Leon Romanovsky <leon@kernel.org> - 2017-01-22 20:10 +0100
        Re: [PATCH] net/mlx4: use rb_entry() David Miller <davem@davemloft.net> - 2017-01-22 22:50 +0100
      Re: [PATCH] net/mlx4: use rb_entry() David Miller <davem@davemloft.net> - 2017-01-22 22:50 +0100
    [PATCH] dm bio prison: use rb_entry() Geliang Tang <geliangtang@gmail.com> - 2017-01-20 15:50 +0100
      Re: [PATCH] dm bio prison: use rb_entry() Coly Li <colyli@suse.de> - 2017-01-20 16:20 +0100
    [PATCH] drm/i915/error: use rb_entry() Geliang Tang <geliangtang@gmail.com> - 2017-01-20 15:50 +0100
      Re: [Intel-gfx] [PATCH] drm/i915/error: use rb_entry() Chris Wilson <chris@chris-wilson.co.uk> - 2017-01-23 10:20 +0100
    [PATCH] drm/nouveau/client: use rb_entry() Geliang Tang <geliangtang@gmail.com> - 2017-01-20 15:50 +0100
    Re: [PATCH] 6lowpan: use rb_entry() David Miller <davem@davemloft.net> - 2017-01-22 22:50 +0100

#1563675 — [PATCH] 6lowpan: use rb_entry()

FromGeliang Tang <geliangtang@gmail.com>
Date2017-01-20 15:50 +0100
Subject[PATCH] 6lowpan: use rb_entry()
Message-ID<t1IFQ-8tF-15@gated-at.bofh.it>
To make the code clearer, use rb_entry() instead of container_of() to
deal with rbtree.

Signed-off-by: Geliang Tang <geliangtang@gmail.com>
---
 net/6lowpan/nhc.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/net/6lowpan/nhc.c b/net/6lowpan/nhc.c
index 7008d53..4fa2fdd 100644
--- a/net/6lowpan/nhc.c
+++ b/net/6lowpan/nhc.c
@@ -27,8 +27,8 @@ static int lowpan_nhc_insert(struct lowpan_nhc *nhc)
 
 	/* Figure out where to put new node */
 	while (*new) {
-		struct lowpan_nhc *this = container_of(*new, struct lowpan_nhc,
-						       node);
+		struct lowpan_nhc *this = rb_entry(*new, struct lowpan_nhc,
+						   node);
 		int result, len_dif, len;
 
 		len_dif = nhc->idlen - this->idlen;
@@ -69,8 +69,8 @@ static struct lowpan_nhc *lowpan_nhc_by_nhcid(const struct sk_buff *skb)
 	const u8 *nhcid_skb_ptr = skb->data;
 
 	while (node) {
-		struct lowpan_nhc *nhc = container_of(node, struct lowpan_nhc,
-						      node);
+		struct lowpan_nhc *nhc = rb_entry(node, struct lowpan_nhc,
+						  node);
 		u8 nhcid_skb_ptr_masked[LOWPAN_NHC_MAX_ID_LEN];
 		int result, i;
 
-- 
2.9.3

[toc] | [next] | [standalone]


#1563682 — [PATCH] net/mlx4: use rb_entry()

FromGeliang Tang <geliangtang@gmail.com>
Date2017-01-20 15:50 +0100
Subject[PATCH] net/mlx4: use rb_entry()
Message-ID<t1IFQ-8tF-35@gated-at.bofh.it>
In reply to#1563675
To make the code clearer, use rb_entry() instead of container_of() to
deal with rbtree.

Signed-off-by: Geliang Tang <geliangtang@gmail.com>
---
 drivers/net/ethernet/mellanox/mlx4/resource_tracker.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
index 1822382..6da6e01 100644
--- a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
+++ b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
@@ -236,8 +236,8 @@ static void *res_tracker_lookup(struct rb_root *root, u64 res_id)
 	struct rb_node *node = root->rb_node;
 
 	while (node) {
-		struct res_common *res = container_of(node, struct res_common,
-						      node);
+		struct res_common *res = rb_entry(node, struct res_common,
+						  node);
 
 		if (res_id < res->res_id)
 			node = node->rb_left;
@@ -255,8 +255,8 @@ static int res_tracker_insert(struct rb_root *root, struct res_common *res)
 
 	/* Figure out where to put new node */
 	while (*new) {
-		struct res_common *this = container_of(*new, struct res_common,
-						       node);
+		struct res_common *this = rb_entry(*new, struct res_common,
+						   node);
 
 		parent = *new;
 		if (res->res_id < this->res_id)
-- 
2.9.3

[toc] | [prev] | [next] | [standalone]


#1564322 — Re: [PATCH] net/mlx4: use rb_entry()

FromLeon Romanovsky <leon@kernel.org>
Date2017-01-22 08:50 +0100
SubjectRe: [PATCH] net/mlx4: use rb_entry()
Message-ID<t2l4t-6n6-1@gated-at.bofh.it>
In reply to#1563682

[Multipart message β€” attachments visible in raw view] — view raw

On Fri, Jan 20, 2017 at 10:36:57PM +0800, Geliang Tang wrote:
> To make the code clearer, use rb_entry() instead of container_of() to
> deal with rbtree.
>
> Signed-off-by: Geliang Tang <geliangtang@gmail.com>
> ---
>  drivers/net/ethernet/mellanox/mlx4/resource_tracker.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)

I don't understand completely the rationale behind this conversion.
rb_entry == container_of, why do we need another name for it?

>
> diff --git a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
> index 1822382..6da6e01 100644
> --- a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
> +++ b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
> @@ -236,8 +236,8 @@ static void *res_tracker_lookup(struct rb_root *root, u64 res_id)
>  	struct rb_node *node = root->rb_node;
>
>  	while (node) {
> -		struct res_common *res = container_of(node, struct res_common,
> -						      node);
> +		struct res_common *res = rb_entry(node, struct res_common,
> +						  node);
>
>  		if (res_id < res->res_id)
>  			node = node->rb_left;
> @@ -255,8 +255,8 @@ static int res_tracker_insert(struct rb_root *root, struct res_common *res)
>
>  	/* Figure out where to put new node */
>  	while (*new) {
> -		struct res_common *this = container_of(*new, struct res_common,
> -						       node);
> +		struct res_common *this = rb_entry(*new, struct res_common,
> +						   node);
>
>  		parent = *new;
>  		if (res->res_id < this->res_id)
> --
> 2.9.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

[toc] | [prev] | [next] | [standalone]


#1564413 — Re: [PATCH] net/mlx4: use rb_entry()

FromGeliang Tang <geliangtang@gmail.com>
Date2017-01-22 15:50 +0100
SubjectRe: [PATCH] net/mlx4: use rb_entry()
Message-ID<t2rCW-1Xi-11@gated-at.bofh.it>
In reply to#1564322
On Sun, Jan 22, 2017 at 09:48:39AM +0200, Leon Romanovsky wrote:
> On Fri, Jan 20, 2017 at 10:36:57PM +0800, Geliang Tang wrote:
> > To make the code clearer, use rb_entry() instead of container_of() to
> > deal with rbtree.
> >
> > Signed-off-by: Geliang Tang <geliangtang@gmail.com>
> > ---
> >  drivers/net/ethernet/mellanox/mlx4/resource_tracker.c | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> I don't understand completely the rationale behind this conversion.
> rb_entry == container_of, why do we need another name for it?
> 

There are several *_entry macros which are defined in kernel data
structures, like list_entry, hlist_entry, rb_entry, etc. Each of them is
just another name for container_of. We use different *_entry so that we
could identify the specific type of data structure that we are dealing
with.

-Geliang

[toc] | [prev] | [next] | [standalone]


#1564551 — Re: [PATCH] net/mlx4: use rb_entry()

FromLeon Romanovsky <leon@kernel.org>
Date2017-01-22 20:10 +0100
SubjectRe: [PATCH] net/mlx4: use rb_entry()
Message-ID<t2vGy-4Dn-17@gated-at.bofh.it>
In reply to#1564413

[Multipart message β€” attachments visible in raw view] — view raw

On Sun, Jan 22, 2017 at 10:42:25PM +0800, Geliang Tang wrote:
> On Sun, Jan 22, 2017 at 09:48:39AM +0200, Leon Romanovsky wrote:
> > On Fri, Jan 20, 2017 at 10:36:57PM +0800, Geliang Tang wrote:
> > > To make the code clearer, use rb_entry() instead of container_of() to
> > > deal with rbtree.
> > >
> > > Signed-off-by: Geliang Tang <geliangtang@gmail.com>
> > > ---
> > >  drivers/net/ethernet/mellanox/mlx4/resource_tracker.c | 8 ++++----
> > >  1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > I don't understand completely the rationale behind this conversion.
> > rb_entry == container_of, why do we need another name for it?
> >
>
> There are several *_entry macros which are defined in kernel data
> structures, like list_entry, hlist_entry, rb_entry, etc. Each of them is
> just another name for container_of. We use different *_entry so that we
> could identify the specific type of data structure that we are dealing
> with.

Your proposed patch doesn't support the importance of such knowledge for
rb_entry. The list_entry case is totally different, because you perform
operation on it.

Anyway, It doesn't matter.
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>

[toc] | [prev] | [next] | [standalone]


#1564574 — Re: [PATCH] net/mlx4: use rb_entry()

FromDavid Miller <davem@davemloft.net>
Date2017-01-22 22:50 +0100
SubjectRe: [PATCH] net/mlx4: use rb_entry()
Message-ID<t2ybn-61y-13@gated-at.bofh.it>
In reply to#1564322
From: Leon Romanovsky <leon@kernel.org>
Date: Sun, 22 Jan 2017 09:48:39 +0200

> I don't understand completely the rationale behind this conversion.
> rb_entry == container_of, why do we need another name for it?

Because it's an annotation.

Either you agree that the macro exists and it should be used in
every spot where those types are being used, or you don't and
therefore argue for the macro and it's usage completely.

[toc] | [prev] | [next] | [standalone]


#1564573 — Re: [PATCH] net/mlx4: use rb_entry()

FromDavid Miller <davem@davemloft.net>
Date2017-01-22 22:50 +0100
SubjectRe: [PATCH] net/mlx4: use rb_entry()
Message-ID<t2ybn-61y-1@gated-at.bofh.it>
In reply to#1563682
From: Geliang Tang <geliangtang@gmail.com>
Date: Fri, 20 Jan 2017 22:36:57 +0800

> To make the code clearer, use rb_entry() instead of container_of() to
> deal with rbtree.
> 
> Signed-off-by: Geliang Tang <geliangtang@gmail.com>

Applied.

[toc] | [prev] | [next] | [standalone]


#1563683 — [PATCH] dm bio prison: use rb_entry()

FromGeliang Tang <geliangtang@gmail.com>
Date2017-01-20 15:50 +0100
Subject[PATCH] dm bio prison: use rb_entry()
Message-ID<t1IFQ-8tF-27@gated-at.bofh.it>
In reply to#1563675
To make the code clearer, use rb_entry() instead of container_of() to
deal with rbtree.

Signed-off-by: Geliang Tang <geliangtang@gmail.com>
---
 drivers/md/dm-bio-prison.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/md/dm-bio-prison.c b/drivers/md/dm-bio-prison.c
index 03af174..a2c8a9e 100644
--- a/drivers/md/dm-bio-prison.c
+++ b/drivers/md/dm-bio-prison.c
@@ -115,7 +115,7 @@ static int __bio_detain(struct dm_bio_prison *prison,
 
 	while (*new) {
 		struct dm_bio_prison_cell *cell =
-			container_of(*new, struct dm_bio_prison_cell, node);
+			rb_entry(*new, struct dm_bio_prison_cell, node);
 
 		r = cmp_keys(key, &cell->key);
 
-- 
2.9.3

[toc] | [prev] | [next] | [standalone]


#1563711 — Re: [PATCH] dm bio prison: use rb_entry()

FromColy Li <colyli@suse.de>
Date2017-01-20 16:20 +0100
SubjectRe: [PATCH] dm bio prison: use rb_entry()
Message-ID<t1J8S-sc-13@gated-at.bofh.it>
In reply to#1563683
On 2017/1/20 δΈ‹εˆ10:36, Geliang Tang wrote:
> To make the code clearer, use rb_entry() instead of container_of() to
> deal with rbtree.
> 
> Signed-off-by: Geliang Tang <geliangtang@gmail.com>
> ---
>  drivers/md/dm-bio-prison.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/md/dm-bio-prison.c b/drivers/md/dm-bio-prison.c
> index 03af174..a2c8a9e 100644
> --- a/drivers/md/dm-bio-prison.c
> +++ b/drivers/md/dm-bio-prison.c
> @@ -115,7 +115,7 @@ static int __bio_detain(struct dm_bio_prison *prison,
>  
>  	while (*new) {
>  		struct dm_bio_prison_cell *cell =
> -			container_of(*new, struct dm_bio_prison_cell, node);
> +			rb_entry(*new, struct dm_bio_prison_cell, node);
>  
>  		r = cmp_keys(key, &cell->key);
>  
> 
Acked-by: Coly Li <colyli@suse.de>

[toc] | [prev] | [next] | [standalone]


#1563685 — [PATCH] drm/i915/error: use rb_entry()

FromGeliang Tang <geliangtang@gmail.com>
Date2017-01-20 15:50 +0100
Subject[PATCH] drm/i915/error: use rb_entry()
Message-ID<t1IFQ-8tF-29@gated-at.bofh.it>
In reply to#1563675
To make the code clearer, use rb_entry() instead of container_of() to
deal with rbtree.

Signed-off-by: Geliang Tang <geliangtang@gmail.com>
---
 drivers/gpu/drm/i915/i915_gpu_error.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index 9cd22cd..e537532 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -1080,7 +1080,7 @@ static void error_record_engine_waiters(struct intel_engine_cs *engine,
 
 	ee->waiters = waiter;
 	for (rb = rb_first(&b->waiters); rb; rb = rb_next(rb)) {
-		struct intel_wait *w = container_of(rb, typeof(*w), node);
+		struct intel_wait *w = rb_entry(rb, typeof(*w), node);
 
 		strcpy(waiter->comm, w->tsk->comm);
 		waiter->pid = w->tsk->pid;
-- 
2.9.3

[toc] | [prev] | [next] | [standalone]


#1564796 — Re: [Intel-gfx] [PATCH] drm/i915/error: use rb_entry()

FromChris Wilson <chris@chris-wilson.co.uk>
Date2017-01-23 10:20 +0100
SubjectRe: [Intel-gfx] [PATCH] drm/i915/error: use rb_entry()
Message-ID<t2IX7-4Ae-3@gated-at.bofh.it>
In reply to#1563685
On Fri, Jan 20, 2017 at 10:36:55PM +0800, Geliang Tang wrote:
> To make the code clearer, use rb_entry() instead of container_of() to
> deal with rbtree.
> 
> Signed-off-by: Geliang Tang <geliangtang@gmail.com>

Applied, thanks.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre

[toc] | [prev] | [next] | [standalone]


#1563688 — [PATCH] drm/nouveau/client: use rb_entry()

FromGeliang Tang <geliangtang@gmail.com>
Date2017-01-20 15:50 +0100
Subject[PATCH] drm/nouveau/client: use rb_entry()
Message-ID<t1IFR-8tF-41@gated-at.bofh.it>
In reply to#1563675
To make the code clearer, use rb_entry() instead of container_of() to
deal with rbtree.

Signed-off-by: Geliang Tang <geliangtang@gmail.com>
---
 drivers/gpu/drm/nouveau/nvkm/core/client.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nvkm/core/client.c b/drivers/gpu/drm/nouveau/nvkm/core/client.c
index e194391..ab2ee14 100644
--- a/drivers/gpu/drm/nouveau/nvkm/core/client.c
+++ b/drivers/gpu/drm/nouveau/nvkm/core/client.c
@@ -221,7 +221,7 @@ nvkm_client_insert(struct nvkm_client *client, struct nvkm_object *object)
 
 	while (*ptr) {
 		struct nvkm_object *this =
-			container_of(*ptr, typeof(*this), node);
+			rb_entry(*ptr, typeof(*this), node);
 		parent = *ptr;
 		if (object->object < this->object)
 			ptr = &parent->rb_left;
@@ -243,7 +243,7 @@ nvkm_client_search(struct nvkm_client *client, u64 handle)
 	struct rb_node *node = client->objroot.rb_node;
 	while (node) {
 		struct nvkm_object *object =
-			container_of(node, typeof(*object), node);
+			rb_entry(node, typeof(*object), node);
 		if (handle < object->object)
 			node = node->rb_left;
 		else
-- 
2.9.3

[toc] | [prev] | [next] | [standalone]


#1564575

FromDavid Miller <davem@davemloft.net>
Date2017-01-22 22:50 +0100
Message-ID<t2ybn-61y-15@gated-at.bofh.it>
In reply to#1563675
From: Geliang Tang <geliangtang@gmail.com>
Date: Fri, 20 Jan 2017 22:36:53 +0800

> To make the code clearer, use rb_entry() instead of container_of() to
> deal with rbtree.
> 
> Signed-off-by: Geliang Tang <geliangtang@gmail.com>

Applied.

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web