int ldlm_resource_put(struct ldlm_resource *res);
void ldlm_resource_add_lock(struct ldlm_resource *res, struct list_head *head,
struct ldlm_lock *lock);
-int ldlm_resource_del_lock(struct ldlm_lock *lock);
+void ldlm_resource_del_lock(struct ldlm_lock *lock);
void ldlm_res2desc(struct ldlm_resource *res, struct ldlm_resource_desc *desc);
void ldlm_resource_dump(struct ldlm_resource *res);
if (rc == 0) {
CERROR("Resource refcount nonzero (%d) after "
"lock cleanup; forcing cleanup.\n",
- res->lr_refcount);
+ atomic_read(&res->lr_refcount));
ldlm_resource_dump(res);
- res->lr_refcount = 1;
+ atomic_set(&res->lr_refcount, 1);
rc = ldlm_resource_put(res);
}
}
void ldlm_resource_del_lock(struct ldlm_lock *lock)
{
- l_lock(&res->lr_namespace->ns_lock);
+ l_lock(&lock->l_resource->lr_namespace->ns_lock);
list_del_init(&lock->l_res_link);
- l_unlock(&res->lr_namespace->ns_lock);
+ l_unlock(&lock->l_resource->lr_namespace->ns_lock);
}
int ldlm_get_resource_handle(struct ldlm_resource *res, struct lustre_handle *h)
(unsigned long long)res->lr_name[2]);
CDEBUG(D_OTHER, "--- Resource: %p (%s) (rc: %d)\n", res, name,
- res->lr_refcount);
+ atomic_read(&res->lr_refcount));
CDEBUG(D_OTHER, "Namespace: %p (%s)\n", res->lr_namespace,
res->lr_namespace->ns_name);
CDEBUG(D_OTHER, "Parent: %p, root: %p\n", res->lr_parent, res->lr_root);