From 03f375e9f6390eab1951de58f2d0938dd9f87658 Mon Sep 17 00:00:00 2001 From: Mr NeilBrown Date: Sun, 7 Jun 2020 19:24:28 -0400 Subject: [PATCH] LU-12678 socklnd: use list_for_each_entry_safe() Several loops use list_for_each_safe(), then call list_entry() as first step. These can be merged using list_for_each_entry_safe(). In one case, the 'safe' version is clearly not needed, so just use list_for_each_entry(). Test-Parameters: trivial testlist=sanity-lnet Signed-off-by: Mr NeilBrown Change-Id: I52eb3598cf4308dfac0aad2a493c4b91c4102e7d Reviewed-on: https://review.whamcloud.com/39129 Tested-by: jenkins Tested-by: Maloo Reviewed-by: James Simmons Reviewed-by: Chris Horn Reviewed-by: Oleg Drokin --- lnet/klnds/socklnd/socklnd.c | 56 ++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/lnet/klnds/socklnd/socklnd.c b/lnet/klnds/socklnd/socklnd.c index 5249227..b6e87ce 100644 --- a/lnet/klnds/socklnd/socklnd.c +++ b/lnet/klnds/socklnd/socklnd.c @@ -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 -- 1.8.3.1