Whamcloud - gitweb
LU-1302 llog: pass lu_env as parametr in llog functions
[fs/lustre-release.git] / lustre / obdclass / cl_object.c
index 930384e..5ab8a92 100644 (file)
@@ -1,6 +1,4 @@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
  * GPL HEADER START
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -28,6 +26,8 @@
 /*
  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
+ *
+ * Copyright (c) 2011, 2012, Whamcloud, Inc.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -50,9 +50,6 @@
  */
 
 #define DEBUG_SUBSYSTEM S_CLASS
-#ifndef EXPORT_SYMTAB
-# define EXPORT_SYMTAB
-#endif
 
 #include <libcfs/libcfs.h>
 /* class_put_type() */
@@ -76,6 +73,8 @@ static cfs_lock_class_key_t cl_lock_guard_class;
 /** Lock class of cl_object_header::coh_attr_guard */
 static cfs_lock_class_key_t cl_attr_guard_class;
 
+extern __u32 lu_context_tags_default;
+extern __u32 lu_session_tags_default;
 /**
  * Initialize cl_object_header.
  */
@@ -541,7 +540,7 @@ static CFS_LIST_HEAD(cl_envs);
 static unsigned cl_envs_cached_nr  = 0;
 static unsigned cl_envs_cached_max = 128; /* XXX: prototype: arbitrary limit
                                            * for now. */
-static cfs_spinlock_t cl_envs_guard = CFS_SPIN_LOCK_UNLOCKED;
+static DEFINE_SPINLOCK(cl_envs_guard);
 
 struct cl_env {
         void             *ce_magic;
@@ -750,7 +749,7 @@ static inline struct cl_env *cl_env_detach(struct cl_env *cle)
         return cle;
 }
 
-static struct lu_env *cl_env_new(__u32 tags, void *debug)
+static struct lu_env *cl_env_new(__u32 ctx_tags, __u32 ses_tags, void *debug)
 {
         struct lu_env *env;
         struct cl_env *cle;
@@ -762,9 +761,10 @@ static struct lu_env *cl_env_new(__u32 tags, void *debug)
                 CFS_INIT_LIST_HEAD(&cle->ce_linkage);
                 cle->ce_magic = &cl_env_init0;
                 env = &cle->ce_lu;
-                rc = lu_env_init(env, LCT_CL_THREAD|tags);
+                rc = lu_env_init(env, LCT_CL_THREAD|ctx_tags);
                 if (rc == 0) {
-                        rc = lu_context_init(&cle->ce_ses, LCT_SESSION|tags);
+                        rc = lu_context_init(&cle->ce_ses,
+                                             LCT_SESSION | ses_tags);
                         if (rc == 0) {
                                 lu_context_enter(&cle->ce_ses);
                                 env->le_ses = &cle->ce_ses;
@@ -820,7 +820,8 @@ static struct lu_env *cl_env_obtain(void *debug)
                 }
         } else {
                 cfs_spin_unlock(&cl_envs_guard);
-                env = cl_env_new(0, debug);
+                env = cl_env_new(lu_context_tags_default,
+                                 lu_session_tags_default, debug);
         }
         RETURN(env);
 }
@@ -895,7 +896,7 @@ struct lu_env *cl_env_alloc(int *refcheck, __u32 tags)
         struct lu_env *env;
 
         LASSERT(cl_env_peek(refcheck) == NULL);
-        env = cl_env_new(tags, __builtin_return_address(0));
+        env = cl_env_new(tags, tags, __builtin_return_address(0));
         if (!IS_ERR(env)) {
                 struct cl_env *cle;