return;
}
+ /* Remove @ns from list. */
+ ldlm_namespace_unregister(ns, ns->ns_client);
+
/* Can fail with -EINTR when force == 0 in which case try harder */
rc = __ldlm_namespace_free(ns, force);
if (rc != ELDLM_OK) {
return;
}
- /* Remove @ns from list. */
- ldlm_namespace_unregister(ns, ns->ns_client);
+ /*
+ * Fini pool _before_ parent proc dir is removed. This is important as
+ * ldlm_pool_fini() removes own proc dir which is child to @dir. Removing
+ * it after @dir may cause oops.
+ */
+ ldlm_pool_fini(&ns->ns_pool);
#ifdef LPROCFS
{
struct proc_dir_entry *dir;