Whamcloud - gitweb
Branch HEAD
[fs/lustre-release.git] / lustre / obdclass / cl_lock.c
index 89077c2..1dae0f8 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();
@@ -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;
@@ -1881,12 +1880,14 @@ struct cl_lock *cl_lock_request(const struct lu_env *env, struct cl_io *io,
         const struct lu_fid  *fid;
         int                   rc;
         int                   iter;
+        int warn;
 
         ENTRY;
         fid = lu_object_fid(&io->ci_obj->co_lu);
         iter = 0;
         do {
-                CDEBUG(iter >= 16 && IS_PO2(iter) ? D_WARNING : D_DLMTRACE,
+                warn = iter >= 16 && IS_PO2(iter);
+                CDEBUG(warn ? D_WARNING : D_DLMTRACE,
                        DDESCR"@"DFID" %i %08x `%s'\n",
                        PDESCR(need), PFID(fid), iter, enqflags, scope);
                 lock = cl_lock_hold_mutex(env, io, need, scope, source);
@@ -1898,7 +1899,9 @@ struct cl_lock *cl_lock_request(const struct lu_env *env, struct cl_io *io,
                                         cl_lock_lockdep_acquire(env,
                                                                 lock, enqflags);
                                         break;
-                                }
+                                } else if (warn)
+                                        CL_LOCK_DEBUG(D_WARNING, env, lock,
+                                                      "got (see bug 17665)\n");
                                 cl_unuse_locked(env, lock);
                         }
                         cl_lock_hold_release(env, lock, scope, source);