Whamcloud - gitweb
Add some debugging to try and catch OST locking.
authoradilger <adilger>
Mon, 7 Oct 2002 18:52:10 +0000 (18:52 +0000)
committeradilger <adilger>
Mon, 7 Oct 2002 18:52:10 +0000 (18:52 +0000)
lustre/ldlm/ldlm_lock.c
lustre/ldlm/ldlm_lockd.c

index eb72514..93d67f6 100644 (file)
@@ -316,6 +316,16 @@ struct ldlm_lock *ldlm_handle2lock(struct lustre_handle *handle)
         if (!kmem_cache_validate(ldlm_lock_slab, (void *)lock))
                 RETURN(NULL);
 
+        if (!lock->l_resource) {
+                CERROR("trying to lock bogus resource: lock %p\n", lock);
+                LDLM_DEBUG(lock, "ldlm_handle2lock(%p)", lock);
+                RETURN(NULL);
+        }
+        if (!lock->l_resource->lr_namespace) {
+                CERROR("trying to lock bogus namespace: lock %p\n", lock);
+                LDLM_DEBUG(lock, "ldlm_handle2lock(%p)", lock);
+                RETURN(NULL);
+        }
         l_lock(&lock->l_resource->lr_namespace->ns_lock);
         if (lock->l_random != handle->cookie)
                 GOTO(out, NULL);
@@ -325,7 +335,7 @@ struct ldlm_lock *ldlm_handle2lock(struct lustre_handle *handle)
 
         retval = LDLM_LOCK_GET(lock);
         EXIT;
     out:
+ out:
         l_unlock(&lock->l_resource->lr_namespace->ns_lock);
         return retval;
 }
index 746af88..7df5ce7 100644 (file)
@@ -347,6 +347,10 @@ int ldlm_handle_cancel(struct ptlrpc_request *req)
                 RETURN(-ENOMEM);
         }
         dlm_req = lustre_msg_buf(req->rq_reqmsg, 0);
+        if (!dlm_req) {
+                CERROR("bad request buffer for cancel\n");
+                RETURN(-EINVAL);
+        }
 
         lock = ldlm_handle2lock(&dlm_req->lock_handle1);
         if (!lock) {