+ if (lri->lri_cb_func == NULL)
+ continue;
+ atomic_inc(&lri->lri_ref);
+ spin_unlock(&lwp_register_list_lock);
+
+ lri->lri_cb_func(lri->lri_cb_data);
+ lustre_put_lwp_item(lri);
+
+ /* Others may have changed the list after we unlock, we have
+ * to rescan the list from the beginning. Usually, the list
+ * 'lwp_register_list' is very short, and there is 'guard'
+ * lri::lri_exp that will prevent the callback to be done
+ * repeatedly. So rescanning the list has no problem. */
+ goto again;