[ovs-git] Open vSwitch: datapath: hlist: drop the node parameter from iterators (master)

dev at openvswitch.org dev at openvswitch.org
Fri Mar 15 16:33:19 UTC 2013


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Open vSwitch".

The branch, master has been updated
       via  f8dfbcb77d7678fa19b4de0f94118b713f74ffb8 (commit)
       via  29285b6286493965a36ae3eff5983457f85cd087 (commit)
      from  9c86c22e0d8c4d4c1f09aba02f42a89d8a201f32 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit f8dfbcb77d7678fa19b4de0f94118b713f74ffb8
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=f8dfbcb77d7678fa19b4de0f94118b713f74ffb8
Author: Sasha Levin <sasha.levin at oracle.com>
		
datapath: hlist: drop the node parameter from iterators
		
I'm not sure why, but the hlist for each entry iterators were conceived

        list_for_each_entry(pos, head, member)

The hlist ones were greedy and wanted an extra parameter:

        hlist_for_each_entry(tpos, pos, head, member)

Why did they need an extra pos parameter? I'm not quite sure. Not only
they don't really need it, it also prevents the iterator from looking
exactly like the list iterator, which is unfortunate.

Besides the semantic patch, there was some manual work required:

 - Fix up the actual hlist iterators in linux/list.h
 - Fix up the declaration of other iterators based on the hlist ones.
 - A very small amount of places were using the 'node' parameter, this
 was modified to use 'obj->member' instead.
 - Coccinelle didn't handle the hlist_for_each_entry_safe iterator
 properly, so those had to be fixed up manually.

The semantic patch which is mostly the work of Peter Senna Tschudin is here:

@@
iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;

type T;
expression a,c,d,e;
identifier b;
statement S;
@@

-T b;
    <+... when != b
(
hlist_for_each_entry(a,
- b,
c, d) S
|
hlist_for_each_entry_continue(a,
- b,
c) S
|
hlist_for_each_entry_from(a,
- b,
c) S
|
hlist_for_each_entry_rcu(a,
- b,
c, d) S
|
hlist_for_each_entry_rcu_bh(a,
- b,
c, d) S
|
hlist_for_each_entry_continue_rcu_bh(a,
- b,
c) S
|
for_each_busy_worker(a, c,
- b,
d) S
|
ax25_uid_for_each(a,
- b,
c) S
|
ax25_for_each(a,
- b,
c) S
|
inet_bind_bucket_for_each(a,
- b,
c) S
|
sctp_for_each_hentry(a,
- b,
c) S
|
sk_for_each(a,
- b,
c) S
|
sk_for_each_rcu(a,
- b,
c) S
|
sk_for_each_from
-(a, b)
+(a)
S
+ sk_for_each_from(a) S
|
sk_for_each_safe(a,
- b,
c, d) S
|
sk_for_each_bound(a,
- b,
c) S
|
hlist_for_each_entry_safe(a,
- b,
c, d, e) S
|
hlist_for_each_entry_continue_rcu(a,
- b,
c) S
|
nr_neigh_for_each(a,
- b,
c) S
|
nr_neigh_for_each_safe(a,
- b,
c, d) S
|
nr_node_for_each(a,
- b,
c) S
|
nr_node_for_each_safe(a,
- b,
c, d) S
|
- for_each_gfn_sp(a, c, d, b) S
+ for_each_gfn_sp(a, c, d) S
|
- for_each_gfn_indirect_valid_sp(a, c, d, b) S
+ for_each_gfn_indirect_valid_sp(a, c, d) S
|
for_each_host(a,
- b,
c) S
|
for_each_host_safe(a,
- b,
c, d) S
|
for_each_mesh_entry(a,
- b,
c, d) S
)
    ...+>

[akpm at linux-foundation.org: drop bogus change from net/ipv4/raw.c]
[akpm at linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
[akpm at linux-foundation.org: checkpatch fixes]
[akpm at linux-foundation.org: fix warnings]
[akpm at linux-foudnation.org: redo intrusive kvm changes]
Tested-by: Peter Senna Tschudin <peter.senna at gmail.com>
Acked-by: Paul E. McKenney <paulmck at linux.vnet.ibm.com>
Signed-off-by: Sasha Levin <sasha.levin at oracle.com>
Cc: Wu Fengguang <fengguang.wu at intel.com>
Cc: Marcelo Tosatti <mtosatti at redhat.com>
Cc: Gleb Natapov <gleb at redhat.com>
Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
Signed-off-by: Jesse Gross <jesse at nicira.com>


commit 29285b6286493965a36ae3eff5983457f85cd087
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=29285b6286493965a36ae3eff5983457f85cd087
Author: Jesse Gross <jesse at nicira.com>
		
datapath: Backport simplified hlist iterators.
		
The hlist iterator macros were simplified upstream to remove the
need for a scratch pointer.  This backports those versions, which
don't otherwise touch anything else about the data structures.

Signed-off-by: Jesse Gross <jesse at nicira.com>


-----------------------------------------------------------------------

Summary of changes:
 datapath/datapath.c                           |   10 ++++------
 datapath/flow.c                               |   13 +++++--------
 datapath/linux/Modules.mk                     |    1 +
 datapath/linux/compat/include/linux/list.h    |   24 ++++++++++++++++++++++++
 datapath/linux/compat/include/linux/rculist.h |    8 ++++++++
 datapath/vport.c                              |    3 +--
 6 files changed, 43 insertions(+), 16 deletions(-)
 create mode 100644 datapath/linux/compat/include/linux/list.h


hooks/post-receive
-- 
Open vSwitch



More information about the git mailing list