struct ldlm_resource *res;
bool rc;
- res = kmem_cache_alloc(ldlm_resource_slab, GFP_NOFS);
+ OBD_SLAB_ALLOC_PTR_GFP(res, ldlm_resource_slab, GFP_NOFS);
if (res == NULL)
return NULL;
break;
}
if (!rc) {
- kmem_cache_free(ldlm_resource_slab, res);
+ OBD_SLAB_FREE_PTR(res, ldlm_resource_slab);
return NULL;
}
INIT_LIST_HEAD(&res->lr_granted);
INIT_LIST_HEAD(&res->lr_waiting);
- res->lr_lvb_data = NULL;
- res->lr_lvb_inode = NULL;
- res->lr_lvb_len = 0;
atomic_set(&res->lr_refcount, 1);
+ spin_lock_init(&res->lr_lock);
lu_ref_init(&res->lr_reference);
/* Since LVB init can be delayed now, there is no longer need to
* immediatelly acquire mutex here. */
+ mutex_init(&res->lr_lvb_mutex);
res->lr_lvb_initialized = false;
return res;
OBD_FREE_PTR(res->lr_ibits_queues);
}
- kmem_cache_free(ldlm_resource_slab, res);
+ OBD_SLAB_FREE(res, ldlm_resource_slab, sizeof *res);
}
/**