Whamcloud - gitweb
Branch HEAD
[fs/lustre-release.git] / lustre / obdclass / cl_lock.c
index a25980d..e087eca 100644 (file)
@@ -212,7 +212,6 @@ static void cl_lock_free(const struct lu_env *env, struct cl_lock *lock)
 
         LASSERT(cl_is_lock(lock));
         LINVRNT(!cl_lock_is_mutexed(lock));
-        LINVRNT(!mutex_is_locked(&lock->cll_guard));
 
         ENTRY;
         might_sleep();
@@ -333,7 +332,7 @@ static struct cl_lock *cl_lock_alloc(const struct lu_env *env,
         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;
@@ -404,7 +403,7 @@ static struct cl_lock *cl_lock_lookup(const struct lu_env *env,
 
         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;
@@ -1742,8 +1741,8 @@ int cl_lock_page_out(const struct lu_env *env, struct cl_lock *lock,
                 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;
@@ -1902,7 +1901,7 @@ struct cl_lock *cl_lock_request(const struct lu_env *env, struct cl_io *io,
                                         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);