Whamcloud - gitweb
LU-12678 socklnd: use list_for_each_entry_safe()
[fs/lustre-release.git] / lnet / klnds / socklnd / socklnd.c
index 5249227..b6e87ce 100644 (file)
@@ -459,15 +459,12 @@ ksocknal_del_route_locked(struct ksock_route *route)
        struct ksock_peer_ni *peer_ni = route->ksnr_peer;
        struct ksock_interface *iface;
        struct ksock_conn *conn;
-       struct list_head *ctmp;
-       struct list_head *cnxt;
+       struct ksock_conn *cnxt;
 
        LASSERT(!route->ksnr_deleted);
 
        /* Close associated conns */
-       list_for_each_safe(ctmp, cnxt, &peer_ni->ksnp_conns) {
-               conn = list_entry(ctmp, struct ksock_conn, ksnc_list);
-
+       list_for_each_entry_safe(conn, cnxt, &peer_ni->ksnp_conns, ksnc_list) {
                if (conn->ksnc_route != route)
                        continue;
 
@@ -559,9 +556,9 @@ static void
 ksocknal_del_peer_locked(struct ksock_peer_ni *peer_ni, __u32 ip)
 {
        struct ksock_conn *conn;
+       struct ksock_conn *cnxt;
        struct ksock_route *route;
-       struct list_head *tmp;
-       struct list_head *nxt;
+       struct ksock_route *rnxt;
        int nshared;
 
        LASSERT(!peer_ni->ksnp_closing);
@@ -569,9 +566,8 @@ ksocknal_del_peer_locked(struct ksock_peer_ni *peer_ni, __u32 ip)
        /* Extra ref prevents peer_ni disappearing until I'm done with it */
        ksocknal_peer_addref(peer_ni);
 
-       list_for_each_safe(tmp, nxt, &peer_ni->ksnp_routes) {
-               route = list_entry(tmp, struct ksock_route, ksnr_list);
-
+       list_for_each_entry_safe(route, rnxt, &peer_ni->ksnp_routes,
+                                ksnr_list) {
                /* no match */
                if (!(ip == 0 || route->ksnr_ipaddr == ip))
                        continue;
@@ -582,28 +578,23 @@ ksocknal_del_peer_locked(struct ksock_peer_ni *peer_ni, __u32 ip)
        }
 
        nshared = 0;
-       list_for_each_safe(tmp, nxt, &peer_ni->ksnp_routes) {
-               route = list_entry(tmp, struct ksock_route, ksnr_list);
+       list_for_each_entry(route, &peer_ni->ksnp_routes, ksnr_list)
                nshared += route->ksnr_share_count;
-       }
 
        if (nshared == 0) {
                /* remove everything else if there are no explicit entries
-                * left */
-
-               list_for_each_safe(tmp, nxt, &peer_ni->ksnp_routes) {
-                       route = list_entry(tmp, struct ksock_route, ksnr_list);
-
+                * left
+                */
+               list_for_each_entry_safe(route, rnxt, &peer_ni->ksnp_routes,
+                                        ksnr_list) {
                        /* we should only be removing auto-entries */
                        LASSERT(route->ksnr_share_count == 0);
                        ksocknal_del_route_locked(route);
                }
 
-               list_for_each_safe(tmp, nxt, &peer_ni->ksnp_conns) {
-                       conn = list_entry(tmp, struct ksock_conn, ksnc_list);
-
+               list_for_each_entry_safe(conn, cnxt, &peer_ni->ksnp_conns,
+                                        ksnc_list)
                        ksocknal_close_conn_locked(conn, 0);
-               }
        }
 
        ksocknal_peer_decref(peer_ni);
@@ -1745,13 +1736,10 @@ int
 ksocknal_close_peer_conns_locked(struct ksock_peer_ni *peer_ni, __u32 ipaddr, int why)
 {
        struct ksock_conn *conn;
-       struct list_head *ctmp;
-       struct list_head *cnxt;
+       struct ksock_conn *cnxt;
        int count = 0;
 
-       list_for_each_safe(ctmp, cnxt, &peer_ni->ksnp_conns) {
-               conn = list_entry(ctmp, struct ksock_conn, ksnc_list);
-
+       list_for_each_entry_safe(conn, cnxt, &peer_ni->ksnp_conns, ksnc_list) {
                 if (ipaddr == 0 ||
                     conn->ksnc_ipaddr == ipaddr) {
                         count++;
@@ -1992,10 +1980,10 @@ static void
 ksocknal_peer_del_interface_locked(struct ksock_peer_ni *peer_ni,
                                   __u32 ipaddr, int index)
 {
-       struct list_head *tmp;
-       struct list_head *nxt;
        struct ksock_route *route;
+       struct ksock_route *rnxt;
        struct ksock_conn *conn;
+       struct ksock_conn *cnxt;
        int i;
        int j;
 
@@ -2008,9 +1996,8 @@ ksocknal_peer_del_interface_locked(struct ksock_peer_ni *peer_ni,
                         break;
                 }
 
-       list_for_each_safe(tmp, nxt, &peer_ni->ksnp_routes) {
-               route = list_entry(tmp, struct ksock_route, ksnr_list);
-
+       list_for_each_entry_safe(route, rnxt, &peer_ni->ksnp_routes,
+                                ksnr_list) {
                if (route->ksnr_myiface != index)
                        continue;
 
@@ -2022,12 +2009,9 @@ ksocknal_peer_del_interface_locked(struct ksock_peer_ni *peer_ni,
                }
        }
 
-       list_for_each_safe(tmp, nxt, &peer_ni->ksnp_conns) {
-               conn = list_entry(tmp, struct ksock_conn, ksnc_list);
-
+       list_for_each_entry_safe(conn, cnxt, &peer_ni->ksnp_conns, ksnc_list)
                 if (conn->ksnc_myipaddr == ipaddr)
                         ksocknal_close_conn_locked (conn, 0);
-        }
 }
 
 static int