[lustre-devel] [PATCH 01/22] Revert "staging: lustre: lnet: api-ni: Use list_for_each_entry_safe"
James Simmons
jsimmons at infradead.org
Wed Aug 1 19:52:58 PDT 2018
> This reverts commit c997866cd27495ae28bc07596457e2bd83fb3275.
>
> These loops really want to remove everything, and using a
> while(!list_empty())
> loop makes this more obvious. In this case, the first loop is
> currently buggy.
Reviewed-by: James Simmons <jsimmons at infradead.org>
> Signed-off-by: NeilBrown <neilb at suse.com>
> ---
> drivers/staging/lustre/lnet/lnet/api-ni.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/lustre/lnet/lnet/api-ni.c b/drivers/staging/lustre/lnet/lnet/api-ni.c
> index d21bceeaceda..51a81075f8d5 100644
> --- a/drivers/staging/lustre/lnet/lnet/api-ni.c
> +++ b/drivers/staging/lustre/lnet/lnet/api-ni.c
> @@ -1077,17 +1077,18 @@ lnet_clear_zombies_nis_locked(void)
> int i;
> int islo;
> struct lnet_ni *ni;
> - struct lnet_ni *temp;
>
> /*
> * Now wait for the NI's I just nuked to show up on ln_zombie_nis
> * and shut them down in guaranteed thread context
> */
> i = 2;
> - list_for_each_entry_safe(ni, temp, &the_lnet.ln_nis_zombie, ni_list) {
> + while (!list_empty(&the_lnet.ln_nis_zombie)) {
> int *ref;
> int j;
>
> + ni = list_entry(the_lnet.ln_nis_zombie.next,
> + struct lnet_ni, ni_list);
> list_del_init(&ni->ni_list);
> cfs_percpt_for_each(ref, j, ni->ni_refs) {
> if (!*ref)
> @@ -1137,7 +1138,6 @@ static void
> lnet_shutdown_lndnis(void)
> {
> struct lnet_ni *ni;
> - struct lnet_ni *temp;
> int i;
>
> /* NB called holding the global mutex */
> @@ -1151,7 +1151,9 @@ lnet_shutdown_lndnis(void)
> the_lnet.ln_shutdown = 1; /* flag shutdown */
>
> /* Unlink NIs from the global table */
> - list_for_each_entry_safe(ni, temp, &the_lnet.ln_nis, ni_list) {
> + while (!list_empty(&the_lnet.ln_nis)) {
> + ni = list_entry(the_lnet.ln_nis.next,
> + struct lnet_ni, ni_list);
> lnet_ni_unlink_locked(ni);
> }
>
>
>
>
More information about the lustre-devel
mailing list