Whamcloud - gitweb
LU-17705 ptlrpc: replace synchronize_rcu() with rcu_barrier()
[fs/lustre-release.git] / lustre / ofd / ofd_dlm.c
index c18ade0..baec254 100644 (file)
  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2012, 2015, Intel Corporation.
+ * Copyright (c) 2012, 2017, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
  *
  * lustre/ofd/ofd_dlm.c
  *
@@ -51,25 +50,6 @@ struct ofd_intent_args {
        int                     error;
 };
 
-int ofd_dlm_init(void)
-{
-       ldlm_glimpse_work_kmem = kmem_cache_create("ldlm_glimpse_work_kmem",
-                                            sizeof(struct ldlm_glimpse_work),
-                                            0, 0, NULL);
-       if (ldlm_glimpse_work_kmem == NULL)
-               return -ENOMEM;
-       else
-               return 0;
-}
-
-void ofd_dlm_exit(void)
-{
-       if (ldlm_glimpse_work_kmem) {
-               kmem_cache_destroy(ldlm_glimpse_work_kmem);
-               ldlm_glimpse_work_kmem = NULL;
-       }
-}
-
 /**
  * OFD interval callback.
  *
@@ -138,7 +118,6 @@ static enum interval_iter ofd_intent_cb(struct interval_node *n, void *args)
 
        /* Find the 'victim' lock from this interval */
        list_for_each_entry(lck, &node->li_group, l_sl_policy) {
-
                victim_lock = LDLM_LOCK_GET(lck);
 
                /* the same policy group - every lock has the
@@ -182,7 +161,7 @@ static enum interval_iter ofd_intent_cb(struct interval_node *n, void *args)
                        GOTO(out_release, rc);
        }
 
-       if (!OBD_FAIL_CHECK(OBD_FAIL_OST_GL_WORK_ALLOC))
+       if (!CFS_FAIL_CHECK(OBD_FAIL_OST_GL_WORK_ALLOC))
                OBD_SLAB_ALLOC_PTR_GFP(gl_work, ldlm_glimpse_work_kmem,
                                       GFP_ATOMIC);
 
@@ -232,9 +211,9 @@ out:
  * \retval             ELDLM_LOCK_ABORTED in other cases except error
  * \retval             negative errno on error
  */
-int ofd_intent_policy(struct ldlm_namespace *ns, struct ldlm_lock **lockp,
-                     void *req_cookie, enum ldlm_mode mode, __u64 flags,
-                     void *data)
+int ofd_intent_policy(const struct lu_env *env, struct ldlm_namespace *ns,
+                     struct ldlm_lock **lockp, void *req_cookie,
+                     enum ldlm_mode mode, __u64 flags, void *data)
 {
        struct ptlrpc_request *req = req_cookie;
        struct ldlm_lock *lock = *lockp;
@@ -254,6 +233,11 @@ int ofd_intent_policy(struct ldlm_namespace *ns, struct ldlm_lock **lockp,
        struct ldlm_glimpse_work *pos, *tmp;
        ENTRY;
 
+       /* update stats for intent in intent policy */
+       if (ptlrpc_req2svc(req)->srv_stats != NULL)
+               lprocfs_counter_incr(ptlrpc_req2svc(req)->srv_stats,
+                                    PTLRPC_LAST_CNTR + LDLM_GLIMPSE_ENQUEUE);
+
        INIT_LIST_HEAD(&arg.gl_list);
        arg.no_glimpse_ast = false;
        arg.error = 0;
@@ -280,9 +264,9 @@ int ofd_intent_policy(struct ldlm_namespace *ns, struct ldlm_lock **lockp,
         */
 
        if (flags & LDLM_FL_BLOCK_NOWAIT) {
-               OBD_FAIL_TIMEOUT(OBD_FAIL_LDLM_AGL_DELAY, 5);
+               CFS_FAIL_TIMEOUT(OBD_FAIL_LDLM_AGL_DELAY, 5);
 
-               if (OBD_FAIL_CHECK(OBD_FAIL_LDLM_AGL_NOLOCK))
+               if (CFS_FAIL_CHECK(OBD_FAIL_LDLM_AGL_NOLOCK))
                        RETURN(ELDLM_LOCK_ABORTED);
        }
 
@@ -302,7 +286,7 @@ int ofd_intent_policy(struct ldlm_namespace *ns, struct ldlm_lock **lockp,
 
        /* The lock met with no resistance; we're finished. */
        if (rc == LDLM_ITER_CONTINUE) {
-               if (OBD_FAIL_TIMEOUT(OBD_FAIL_LDLM_GLIMPSE, 2)) {
+               if (CFS_FAIL_TIMEOUT(OBD_FAIL_LDLM_GLIMPSE, 2)) {
                        ldlm_resource_unlink_lock(lock);
                        err = ELDLM_LOCK_ABORTED;
                } else {