int lov_lock_init_empty(const struct lu_env *env, struct cl_object *obj, struct cl_lock *lock, const struct cl_io *io) { struct lov_lock *lck; int result = -ENOMEM; lck = kmem_cache_zalloc(lov_lock_kmem, GFP_NOFS); if (lck) { cl_lock_slice_add(lock, &lck->lls_cl, obj, &lov_empty_lock_ops); result = 0; } return result; }
int lov_lock_init_raid0(const struct lu_env *env, struct cl_object *obj, struct cl_lock *lock, const struct cl_io *io) { struct lov_lock *lck; int result = 0; lck = lov_lock_sub_init(env, obj, lock); if (!IS_ERR(lck)) cl_lock_slice_add(lock, &lck->lls_cl, obj, &lov_lock_ops); else result = PTR_ERR(lck); return result; }
int lovsub_lock_init(const struct lu_env *env, struct cl_object *obj, struct cl_lock *lock, const struct cl_io *io) { struct lovsub_lock *lsk; int result; ENTRY; OBD_SLAB_ALLOC_PTR_GFP(lsk, lovsub_lock_kmem, GFP_NOFS); if (lsk != NULL) { INIT_LIST_HEAD(&lsk->lss_parents); cl_lock_slice_add(lock, &lsk->lss_cl, obj, &lovsub_lock_ops); result = 0; } else result = -ENOMEM; RETURN(result); }
int vvp_lock_init(const struct lu_env *env, struct cl_object *obj, struct cl_lock *lock, const struct cl_io *unused) { struct vvp_lock *vlk; int result; CLOBINVRNT(env, obj, vvp_object_invariant(obj)); vlk = kmem_cache_zalloc(vvp_lock_kmem, GFP_NOFS); if (vlk) { cl_lock_slice_add(lock, &vlk->vlk_cl, obj, &vvp_lock_ops); result = 0; } else { result = -ENOMEM; } return result; }
int vvp_lock_init(const struct lu_env *env, struct cl_object *obj, struct cl_lock *lock, const struct cl_io *unused) { struct vvp_lock *vlk; int result; CLOBINVRNT(env, obj, vvp_object_invariant(obj)); OBD_SLAB_ALLOC_PTR_GFP(vlk, vvp_lock_kmem, GFP_NOFS); if (vlk != NULL) { cl_lock_slice_add(lock, &vlk->vlk_cl, obj, &vvp_lock_ops); result = 0; } else { result = -ENOMEM; } return result; }