Whamcloud - gitweb
LU-6142 obdclass: use cl_object_for_each more broadly.
[fs/lustre-release.git] / lustre / obdclass / cl_lock.c
index ef2fd37..8e417c0 100644 (file)
  *
  * You should have received a copy of the GNU General Public License
  * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -113,9 +109,11 @@ int cl_lock_init(const struct lu_env *env, struct cl_lock *lock,
        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;
@@ -171,8 +169,8 @@ EXPORT_SYMBOL(cl_lock_cancel);
 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;
 
@@ -204,9 +202,9 @@ int cl_lock_request(const struct lu_env *env, struct cl_io *io,
        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);
@@ -248,7 +246,7 @@ const char *cl_lock_mode_name(const enum cl_lock_mode mode)
                [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);