LASSERT(obj != NULL);
INIT_LIST_HEAD(&lock->cll_layers);
- list_for_each_entry(scan, &obj->co_lu.lo_header->loh_layers,
- co_lu.lo_linkage) {
- result = scan->co_ops->coo_lock_init(env, scan, lock, io);
+ cl_object_for_each(scan, obj) {
+ if (scan->co_ops->coo_lock_init != NULL)
+ result = scan->co_ops->coo_lock_init(env, scan, lock,
+ io);
+
if (result != 0) {
cl_lock_fini(env, lock);
break;
int cl_lock_enqueue(const struct lu_env *env, struct cl_io *io,
struct cl_lock *lock, struct cl_sync_io *anchor)
{
- const struct cl_lock_slice *slice;
- int rc = -ENOSYS;
+ const struct cl_lock_slice *slice;
+ int rc = 0;
ENTRY;
if (rc < 0)
RETURN(rc);
- if ((enq_flags & CEF_ASYNC) && !(enq_flags & CEF_AGL)) {
+ if ((enq_flags & CEF_GLIMPSE) && !(enq_flags & CEF_SPECULATIVE)) {
anchor = &cl_env_info(env)->clt_anchor;
- cl_sync_io_init(anchor, 1, cl_sync_io_end);
+ cl_sync_io_init(anchor, 1);
}
rc = cl_lock_enqueue(env, io, lock, anchor);
[CLM_WRITE] = "W",
[CLM_GROUP] = "G"
};
- CLASSERT(CLM_MAX == ARRAY_SIZE(names));
+ BUILD_BUG_ON(CLM_MAX != ARRAY_SIZE(names));
return names[mode];
}
EXPORT_SYMBOL(cl_lock_mode_name);