LASSERT(cl_is_lock(lock));
LINVRNT(!cl_lock_is_mutexed(lock));
- LINVRNT(!mutex_is_locked(&lock->cll_guard));
ENTRY;
might_sleep();
struct cl_site *site = cl_object_site(obj);
ENTRY;
- OBD_SLAB_ALLOC_PTR(lock, cl_lock_kmem);
+ OBD_SLAB_ALLOC_PTR_GFP(lock, cl_lock_kmem, CFS_ALLOC_IO);
if (lock != NULL) {
atomic_set(&lock->cll_ref, 1);
lock->cll_descr = *descr;
head = cl_object_header(obj);
site = cl_object_site(obj);
- LINVRNT(spin_is_locked(&head->coh_lock_guard));
+ LINVRNT_SPIN_LOCKED(&head->coh_lock_guard);
atomic_inc(&site->cs_locks.cs_lookup);
list_for_each_entry(lock, &head->coh_locks, cll_linkage) {
int matched;
if (queue->c2_qin.pl_nr > 0) {
result = cl_page_list_unmap(env, io, &queue->c2_qin);
if (!discard) {
- rc0 = cl_io_submit_rw(env, io,
- CRT_WRITE, queue);
+ rc0 = cl_io_submit_rw(env, io, CRT_WRITE,
+ queue, CRP_CANCEL);
rc1 = cl_page_list_own(env, io,
&queue->c2_qout);
result = result ?: rc0 ?: rc1;
break;
} else if (warn)
CL_LOCK_DEBUG(D_WARNING, env, lock,
- "got\n");
+ "got (see bug 17665)\n");
cl_unuse_locked(env, lock);
}
cl_lock_hold_release(env, lock, scope, source);