Whamcloud - gitweb
Print a more useful error if we have problems cleaning up the portals slabs.
authoradilger <adilger>
Mon, 3 Nov 2003 22:57:30 +0000 (22:57 +0000)
committeradilger <adilger>
Mon, 3 Nov 2003 22:57:30 +0000 (22:57 +0000)
I don't know why this would fail (we check refcounts above), but it did.

lnet/lnet/lib-init.c
lustre/portals/portals/lib-init.c

index 99c4d32..ab223d6 100644 (file)
@@ -127,6 +127,8 @@ kportal_descriptor_setup (nal_cb_t *nal)
 void
 kportal_descriptor_cleanup (nal_cb_t *nal)
 {
+        int rc;
+
         if (--ptl_slab_users != 0)
                 return;
 
@@ -135,14 +137,26 @@ kportal_descriptor_cleanup (nal_cb_t *nal)
         LASSERT (atomic_read (&eq_in_use_count) == 0);
         LASSERT (atomic_read (&msg_in_use_count) == 0);
 
-        if (ptl_md_slab != NULL)
-                kmem_cache_destroy(ptl_md_slab);
-        if (ptl_msg_slab != NULL)
-                kmem_cache_destroy(ptl_msg_slab);
-        if (ptl_me_slab != NULL)
-                kmem_cache_destroy(ptl_me_slab);
-        if (ptl_eq_slab != NULL)
-                kmem_cache_destroy(ptl_eq_slab);
+        if (ptl_md_slab != NULL) {
+                rc = kmem_cache_destroy(ptl_md_slab);
+                if (rc != 0)
+                        CERROR("unable to free MD slab\n");
+        }
+        if (ptl_msg_slab != NULL) {
+                rc = kmem_cache_destroy(ptl_msg_slab);
+                if (rc != 0)
+                        CERROR("unable to free MSG slab\n");
+        }
+        if (ptl_me_slab != NULL) {
+                rc = kmem_cache_destroy(ptl_me_slab);
+                if (rc != 0)
+                        CERROR("unable to free ME slab\n");
+        }
+        if (ptl_eq_slab != NULL) {
+                rc = kmem_cache_destroy(ptl_eq_slab);
+                if (rc != 0)
+                        CERROR("unable to free EQ slab\n");
+        }
 }
 #else
 
index 99c4d32..ab223d6 100644 (file)
@@ -127,6 +127,8 @@ kportal_descriptor_setup (nal_cb_t *nal)
 void
 kportal_descriptor_cleanup (nal_cb_t *nal)
 {
+        int rc;
+
         if (--ptl_slab_users != 0)
                 return;
 
@@ -135,14 +137,26 @@ kportal_descriptor_cleanup (nal_cb_t *nal)
         LASSERT (atomic_read (&eq_in_use_count) == 0);
         LASSERT (atomic_read (&msg_in_use_count) == 0);
 
-        if (ptl_md_slab != NULL)
-                kmem_cache_destroy(ptl_md_slab);
-        if (ptl_msg_slab != NULL)
-                kmem_cache_destroy(ptl_msg_slab);
-        if (ptl_me_slab != NULL)
-                kmem_cache_destroy(ptl_me_slab);
-        if (ptl_eq_slab != NULL)
-                kmem_cache_destroy(ptl_eq_slab);
+        if (ptl_md_slab != NULL) {
+                rc = kmem_cache_destroy(ptl_md_slab);
+                if (rc != 0)
+                        CERROR("unable to free MD slab\n");
+        }
+        if (ptl_msg_slab != NULL) {
+                rc = kmem_cache_destroy(ptl_msg_slab);
+                if (rc != 0)
+                        CERROR("unable to free MSG slab\n");
+        }
+        if (ptl_me_slab != NULL) {
+                rc = kmem_cache_destroy(ptl_me_slab);
+                if (rc != 0)
+                        CERROR("unable to free ME slab\n");
+        }
+        if (ptl_eq_slab != NULL) {
+                rc = kmem_cache_destroy(ptl_eq_slab);
+                if (rc != 0)
+                        CERROR("unable to free EQ slab\n");
+        }
 }
 #else