Staging: lustre: lnet: Use list_for_each_entry_safe
PATCH 1/1 Staging: lustre: lnet: Use list_for_each_entry_safe
Doubly linked lists which are iterated using list_empty and list_entry macros have been replaced with list_for_each_entry_safe macro.
This makes the iteration simpler and more readable.
This patch replaces the while loop containing list_empty and list_entry with list_for_each_entry_safe.
This was done with Coccinelle.
@@
expression E1;
identifier I1, I2;
type T;
iterator name list_for_each_entry_safe;
@@
T *I1;
+ T *tmp;
...
- while (list_empty(&E1) == 0)
+ list_for_each_entry_safe (I1, tmp, &E1, I2)
{
...when != T *I1;
- I1 = list_entry(E1.next, T, I2);
...
}
Signed-off-by Bhaktipriya Shridhar <[email protected]>
--- drivers/staging/lustre/lnet/lnet/lib-move.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
drivers/staging/lustre/lnet/lnet/lib-move.c +4 -5
@@ -55,6 +55,7 @@ int lnet_fail_nid(lnet_nid_t nid, unsigned int threshold) { lnet_test_peer_t *tp; +lnet_test_peer_t *temp;struct list_head *el;struct list_head *next;struct list_head cull;
@@ -93,9 +94,7 @@ lnet_fail_nid(lnet_nid_t nid, unsigned int threshold)lnet_net_unlock (0 ); -while (!list_empty (&cull)) { - tp =list_entry (cull.next, lnet_test_peer_t, tp_list); - +list_for_each_entry_safe (tp, temp, &cull, tp_list) {list_del (&tp->tp_list);LIBCFS_FREE (tp,sizeof (*tp)); }
@@ -106,6 +105,7 @@ static int fail_peer(lnet_nid_t nid, int outgoing) {lnet_test_peer_t *tp; +lnet_test_peer_t *temp;struct list_head *el;struct list_head *next;struct list_head cull;
@@ -152,8 +152,7 @@ fail_peer(lnet_nid_t nid, int outgoing)lnet_net_unlock (0 ); -while (!list_empty (&cull)) { - tp =list_entry (cull.next, lnet_test_peer_t, tp_list); +list_for_each_entry_safe (tp, temp, &cull, tp_list) {list_del (&tp->tp_list);LIBCFS_FREE (tp,sizeof (*tp));
--
2.1.4