[lustre-devel] [PATCH 6/6] lustre: convert list_for_each() in ksocknal_debug_peerhash()
James Simmons
jsimmons at infradead.org
Wed Aug 1 20:14:56 PDT 2018
> This list_for_each() loop searches for a particular entry,
> then acts of in. It currently acts after the loop by testing
> if the variable is NULL. When we convert to list_for_each_entry()
> it won't be NULL.
>
> Change the code so the acting happens inside the loop.
> list_for_each_entry() {
> if (this isn't it)
> continue;
> act on entry;
> goto done; // break out of 2 loops
> }
Reviewed-by: James Simmons <jsimmons at infradead.org>
> Signed-off-by: NeilBrown <neilb at suse.com>
> ---
> .../staging/lustre/lnet/klnds/socklnd/socklnd.c | 64 +++++++++-----------
> 1 file changed, 28 insertions(+), 36 deletions(-)
>
> diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c
> index 33335713b371..f0b0480686dc 100644
> --- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c
> +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c
> @@ -2462,52 +2462,44 @@ static void
> ksocknal_debug_peerhash(struct lnet_ni *ni)
> {
> struct ksock_peer *peer = NULL;
> - struct list_head *tmp;
> int i;
>
> read_lock(&ksocknal_data.ksnd_global_lock);
>
> for (i = 0; i < ksocknal_data.ksnd_peer_hash_size; i++) {
> - list_for_each(tmp, &ksocknal_data.ksnd_peers[i]) {
> - peer = list_entry(tmp, struct ksock_peer, ksnp_list);
> -
> - if (peer->ksnp_ni == ni)
> - break;
> + list_for_each_entry(peer, &ksocknal_data.ksnd_peers[i], ksnp_list) {
> + struct ksock_route *route;
> + struct ksock_conn *conn;
>
> - peer = NULL;
> - }
> - }
> + if (peer->ksnp_ni != ni)
> + continue;
>
> - if (peer) {
> - struct ksock_route *route;
> - struct ksock_conn *conn;
> -
> - CWARN("Active peer on shutdown: %s, ref %d, scnt %d, closing %d, accepting %d, err %d, zcookie %llu, txq %d, zc_req %d\n",
> - libcfs_id2str(peer->ksnp_id),
> - atomic_read(&peer->ksnp_refcount),
> - peer->ksnp_sharecount, peer->ksnp_closing,
> - peer->ksnp_accepting, peer->ksnp_error,
> - peer->ksnp_zc_next_cookie,
> - !list_empty(&peer->ksnp_tx_queue),
> - !list_empty(&peer->ksnp_zc_req_list));
> -
> - list_for_each(tmp, &peer->ksnp_routes) {
> - route = list_entry(tmp, struct ksock_route, ksnr_list);
> - CWARN("Route: ref %d, schd %d, conn %d, cnted %d, del %d\n",
> - atomic_read(&route->ksnr_refcount),
> - route->ksnr_scheduled, route->ksnr_connecting,
> - route->ksnr_connected, route->ksnr_deleted);
> - }
> + CWARN("Active peer on shutdown: %s, ref %d, scnt %d, closing %d, accepting %d, err %d, zcookie %llu, txq %d, zc_req %d\n",
> + libcfs_id2str(peer->ksnp_id),
> + atomic_read(&peer->ksnp_refcount),
> + peer->ksnp_sharecount, peer->ksnp_closing,
> + peer->ksnp_accepting, peer->ksnp_error,
> + peer->ksnp_zc_next_cookie,
> + !list_empty(&peer->ksnp_tx_queue),
> + !list_empty(&peer->ksnp_zc_req_list));
> +
> + list_for_each_entry(route, &peer->ksnp_routes, ksnr_list) {
> + CWARN("Route: ref %d, schd %d, conn %d, cnted %d, del %d\n",
> + atomic_read(&route->ksnr_refcount),
> + route->ksnr_scheduled, route->ksnr_connecting,
> + route->ksnr_connected, route->ksnr_deleted);
> + }
>
> - list_for_each(tmp, &peer->ksnp_conns) {
> - conn = list_entry(tmp, struct ksock_conn, ksnc_list);
> - CWARN("Conn: ref %d, sref %d, t %d, c %d\n",
> - atomic_read(&conn->ksnc_conn_refcount),
> - atomic_read(&conn->ksnc_sock_refcount),
> - conn->ksnc_type, conn->ksnc_closing);
> + list_for_each_entry(conn, &peer->ksnp_conns, ksnc_list) {
> + CWARN("Conn: ref %d, sref %d, t %d, c %d\n",
> + atomic_read(&conn->ksnc_conn_refcount),
> + atomic_read(&conn->ksnc_sock_refcount),
> + conn->ksnc_type, conn->ksnc_closing);
> + }
> + goto done;
> }
> }
> -
> +done:
> read_unlock(&ksocknal_data.ksnd_global_lock);
> }
>
>
>
>
More information about the lustre-devel
mailing list