-void cl_set_ctx_tags(__u32 tags)
-{
- cl_ctx_tags = tags;
-}
-EXPORT_SYMBOL(cl_set_ctx_tags);
-
-void cl_set_ses_tags(__u32 tags)
-{
- cl_ses_tags = tags;
-}
-EXPORT_SYMBOL(cl_set_ses_tags);
-
-static struct lu_env *cl_env_obtain(void *debug)
-{
- struct cl_env *cle;
- struct lu_env *env;
-
- ENTRY;
- cfs_spin_lock(&cl_envs_guard);
- LASSERT(equi(cl_envs_cached_nr == 0, cfs_list_empty(&cl_envs)));
- if (cl_envs_cached_nr > 0) {
- int rc;
-
- cle = container_of(cl_envs.next, struct cl_env, ce_linkage);
- cfs_list_del_init(&cle->ce_linkage);
- cl_envs_cached_nr--;
- cfs_spin_unlock(&cl_envs_guard);
-
- env = &cle->ce_lu;
- rc = lu_env_refill(env);
- if (rc == 0) {
- cl_env_init0(cle, debug);
- lu_context_enter(&env->le_ctx);
- lu_context_enter(&cle->ce_ses);
- } else {
- cl_env_fini(cle);
- env = ERR_PTR(rc);
- }
- } else {
- cfs_spin_unlock(&cl_envs_guard);
- env = cl_env_new(cl_ctx_tags, cl_ses_tags, debug);
- }
- RETURN(env);
-}
-