Whamcloud - gitweb
LU-1302 llog: pass lu_env as parametr in llog functions
[fs/lustre-release.git] / lustre / ptlrpc / llog_client.c
index e884f15..6b07ef2 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.
  * GPL HEADER END
  */
 /*
- * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
+ *
+ * Copyright (c) 2012, Whamcloud, Inc.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
 
 #define DEBUG_SUBSYSTEM S_LOG
 
-#ifndef EXPORT_SYMTAB
-#define EXPORT_SYMTAB
-#endif
-
 #ifdef __KERNEL__
 #include <libcfs/libcfs.h>
 #else
@@ -57,8 +53,8 @@
 #include <lustre_net.h>
 #include <libcfs/list.h>
 
-#define  LLOG_CLIENT_ENTRY(ctxt, imp) do {                            \
-        mutex_down(&ctxt->loc_sem);                                   \
+#define LLOG_CLIENT_ENTRY(ctxt, imp) do {                             \
+        cfs_mutex_lock(&ctxt->loc_mutex);                             \
         if (ctxt->loc_imp) {                                          \
                 imp = class_import_get(ctxt->loc_imp);                \
         } else {                                                      \
                        "but I'll try again next time.  Not fatal.\n", \
                        ctxt->loc_idx);                                \
                 imp = NULL;                                           \
-                mutex_up(&ctxt->loc_sem);                             \
+                cfs_mutex_unlock(&ctxt->loc_mutex);                   \
                 return (-EINVAL);                                     \
         }                                                             \
-        mutex_up(&ctxt->loc_sem);                                     \
+        cfs_mutex_unlock(&ctxt->loc_mutex);                           \
 } while(0)
 
-#define  LLOG_CLIENT_EXIT(ctxt, imp) do {                  \
-        mutex_down(&ctxt->loc_sem);                        \
-        if (ctxt->loc_imp != imp)                          \
-                CWARN("loc_imp has changed from %p to %p", \
-                       ctxt->loc_imp, imp);                \
-        class_import_put(imp);                             \
-        mutex_up(&ctxt->loc_sem);                          \
+#define LLOG_CLIENT_EXIT(ctxt, imp) do {                              \
+        cfs_mutex_lock(&ctxt->loc_mutex);                             \
+        if (ctxt->loc_imp != imp)                                     \
+                CWARN("loc_imp has changed from %p to %p\n",          \
+                       ctxt->loc_imp, imp);                           \
+        class_import_put(imp);                                        \
+        cfs_mutex_unlock(&ctxt->loc_mutex);                           \
 } while(0)
 
 /* This is a callback from the llog_* functions.
  * Assumes caller has already pushed us into the kernel context. */
-static int llog_client_create(struct llog_ctxt *ctxt, struct llog_handle **res,
-                              struct llog_logid *logid, char *name)
+static int llog_client_create(const struct lu_env *env, struct llog_ctxt *ctxt,
+                             struct llog_handle **res,
+                             struct llog_logid *logid, char *name)
 {
         struct obd_import     *imp;
         struct llogd_body     *body;
@@ -113,6 +110,7 @@ static int llog_client_create(struct llog_ctxt *ctxt, struct llog_handle **res,
                                  LLOG_ORIGIN_HANDLE_CREATE);
         if (rc) {
                 ptlrpc_request_free(req);
+                req = NULL;
                 GOTO(err_free, rc);
         }
         ptlrpc_request_set_replen(req);
@@ -146,11 +144,13 @@ out:
         ptlrpc_req_finished(req);
         return rc;
 err_free:
+        *res = NULL;
         llog_free_handle(handle);
         goto out;
 }
 
-static int llog_client_destroy(struct llog_handle *loghandle)
+static int llog_client_destroy(const struct lu_env *env,
+                              struct llog_handle *loghandle)
 {
         struct obd_import     *imp;
         struct ptlrpc_request *req = NULL;
@@ -171,7 +171,7 @@ static int llog_client_destroy(struct llog_handle *loghandle)
 
         ptlrpc_request_set_replen(req);
         rc = ptlrpc_queue_wait(req);
-        
+
         ptlrpc_req_finished(req);
 err_exit:
         LLOG_CLIENT_EXIT(loghandle->lgh_ctxt, imp);
@@ -179,9 +179,10 @@ err_exit:
 }
 
 
-static int llog_client_next_block(struct llog_handle *loghandle,
-                                  int *cur_idx, int next_idx,
-                                  __u64 *cur_offset, void *buf, int len)
+static int llog_client_next_block(const struct lu_env *env,
+                                 struct llog_handle *loghandle,
+                                 int *cur_idx, int next_idx,
+                                 __u64 *cur_offset, void *buf, int len)
 {
         struct obd_import     *imp;
         struct ptlrpc_request *req = NULL;
@@ -196,7 +197,7 @@ static int llog_client_next_block(struct llog_handle *loghandle,
                                         LLOG_ORIGIN_HANDLE_NEXT_BLOCK);
         if (req == NULL)
                 GOTO(err_exit, rc =-ENOMEM);
-                
+
         body = req_capsule_client_get(&req->rq_pill, &RMF_LLOGD_BODY);
         body->lgd_logid = loghandle->lgh_id;
         body->lgd_ctxt_idx = loghandle->lgh_ctxt->loc_idx - 1;
@@ -233,8 +234,9 @@ err_exit:
         return rc;
 }
 
-static int llog_client_prev_block(struct llog_handle *loghandle,
-                                  int prev_idx, void *buf, int len)
+static int llog_client_prev_block(const struct lu_env *env,
+                                 struct llog_handle *loghandle,
+                                 int prev_idx, void *buf, int len)
 {
         struct obd_import     *imp;
         struct ptlrpc_request *req = NULL;
@@ -281,7 +283,8 @@ err_exit:
         return rc;
 }
 
-static int llog_client_read_header(struct llog_handle *handle)
+static int llog_client_read_header(const struct lu_env *env,
+                                  struct llog_handle *handle)
 {
         struct obd_import     *imp;
         struct ptlrpc_request *req = NULL;
@@ -336,7 +339,8 @@ err_exit:
         return rc;
 }
 
-static int llog_client_close(struct llog_handle *handle)
+static int llog_client_close(const struct lu_env *env,
+                            struct llog_handle *handle)
 {
         /* this doesn't call LLOG_ORIGIN_HANDLE_CLOSE because
            the servers all close the file at the end of every
@@ -353,3 +357,4 @@ struct llog_operations llog_client_ops = {
         lop_destroy:     llog_client_destroy,
         lop_close:       llog_client_close,
 };
+EXPORT_SYMBOL(llog_client_ops);