Skip to content
Snippets Groups Projects
Commit bb0a4484 authored by deen's avatar deen
Browse files

This is a debugging patch from LLNL for a rare list walking issue.

b=16206
i=he.huang
i=alexey.lyashkov
parent a0e902b3
No related branches found
No related tags found
No related merge requests found
...@@ -182,6 +182,9 @@ lnet_md_alloc (lnet_md_t *umd) ...@@ -182,6 +182,9 @@ lnet_md_alloc (lnet_md_t *umd)
md = (lnet_libmd_t *)lnet_freelist_alloc(&the_lnet.ln_free_mds); md = (lnet_libmd_t *)lnet_freelist_alloc(&the_lnet.ln_free_mds);
LNET_UNLOCK(); LNET_UNLOCK();
if (md != NULL)
CFS_INIT_LIST_HEAD(&md->md_list);
return (md); return (md);
} }
...@@ -282,6 +285,7 @@ lnet_md_alloc (lnet_md_t *umd) ...@@ -282,6 +285,7 @@ lnet_md_alloc (lnet_md_t *umd)
/* Set here in case of early free */ /* Set here in case of early free */
md->md_options = umd->options; md->md_options = umd->options;
md->md_niov = niov; md->md_niov = niov;
CFS_INIT_LIST_HEAD(&md->md_list);
} }
return (md); return (md);
......
...@@ -734,7 +734,7 @@ lnet_unprepare (void) ...@@ -734,7 +734,7 @@ lnet_unprepare (void)
lnet_libmd_t, md_list); lnet_libmd_t, md_list);
CERROR ("Active md %p on exit\n", md); CERROR ("Active md %p on exit\n", md);
list_del (&md->md_list); list_del_init (&md->md_list);
lnet_md_free (md); lnet_md_free (md);
} }
......
...@@ -77,7 +77,8 @@ lnet_md_unlink(lnet_libmd_t *md) ...@@ -77,7 +77,8 @@ lnet_md_unlink(lnet_libmd_t *md)
LASSERT (md->md_eq->eq_refcount >= 0); LASSERT (md->md_eq->eq_refcount >= 0);
} }
list_del (&md->md_list); LASSERT (!list_empty(&md->md_list));
list_del_init (&md->md_list);
lnet_md_free(md); lnet_md_free(md);
} }
...@@ -186,6 +187,7 @@ lib_md_build(lnet_libmd_t *lmd, lnet_md_t *umd, int unlink) ...@@ -186,6 +187,7 @@ lib_md_build(lnet_libmd_t *lmd, lnet_md_t *umd, int unlink)
/* It's good; let handle2md succeed and add to active mds */ /* It's good; let handle2md succeed and add to active mds */
lnet_initialise_handle (&lmd->md_lh, LNET_COOKIE_TYPE_MD); lnet_initialise_handle (&lmd->md_lh, LNET_COOKIE_TYPE_MD);
LASSERT (list_empty(&lmd->md_list));
list_add (&lmd->md_list, &the_lnet.ln_active_mds); list_add (&lmd->md_list, &the_lnet.ln_active_mds);
return 0; return 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment