From b3c75462df4ab1c9ceaf79c87511be5edd27f9f3 Mon Sep 17 00:00:00 2001 From: adilger Date: Mon, 7 Oct 2002 18:52:10 +0000 Subject: [PATCH] Add some debugging to try and catch OST locking. --- lustre/ldlm/ldlm_lock.c | 12 +++++++++++- lustre/ldlm/ldlm_lockd.c | 4 ++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lustre/ldlm/ldlm_lock.c b/lustre/ldlm/ldlm_lock.c index eb72514..93d67f6 100644 --- a/lustre/ldlm/ldlm_lock.c +++ b/lustre/ldlm/ldlm_lock.c @@ -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; } diff --git a/lustre/ldlm/ldlm_lockd.c b/lustre/ldlm/ldlm_lockd.c index 746af88..7df5ce7 100644 --- a/lustre/ldlm/ldlm_lockd.c +++ b/lustre/ldlm/ldlm_lockd.c @@ -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) { -- 1.8.3.1