b=16206
i=he.huang
i=alexey.lyashkov
md = (lnet_libmd_t *)lnet_freelist_alloc(&the_lnet.ln_free_mds);
LNET_UNLOCK();
md = (lnet_libmd_t *)lnet_freelist_alloc(&the_lnet.ln_free_mds);
LNET_UNLOCK();
+ if (md != NULL)
+ CFS_INIT_LIST_HEAD(&md->md_list);
+
/* Set here in case of early free */
md->md_options = umd->options;
md->md_niov = niov;
/* Set here in case of early free */
md->md_options = umd->options;
md->md_niov = niov;
+ CFS_INIT_LIST_HEAD(&md->md_list);
lnet_libmd_t, md_list);
CERROR ("Active md %p on exit\n", md);
lnet_libmd_t, md_list);
CERROR ("Active md %p on exit\n", md);
- list_del (&md->md_list);
+ list_del_init (&md->md_list);
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);
/* It's good; let handle2md succeed and add to active mds */
lnet_initialise_handle (&lmd->md_lh, LNET_COOKIE_TYPE_MD);
/* It's good; let handle2md succeed and add to active mds */
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);
return 0;
list_add (&lmd->md_list, &the_lnet.ln_active_mds);
return 0;