Whamcloud - gitweb
LU-8560 libcfs: handle PAGE_CACHE_* removal in newer kernels
[fs/lustre-release.git] / lustre / fld / fld_handler.c
index fbf0369..e7631f2 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2013, Intel Corporation.
+ * Copyright (c) 2011, 2015, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -51,7 +51,6 @@
 #include <obd_support.h>
 #include <lustre_fid.h>
 #include <lustre_fld.h>
-#include <md_object.h>
 #include <lustre_req_layout.h>
 #include <lprocfs_status.h>
 #include "fld_internal.h"
@@ -180,7 +179,10 @@ int fld_update_from_controller(const struct lu_env *env,
                        if (lsra->lsra_lsr[i].lsr_index != index)
                                GOTO(out, rc = -EINVAL);
 
+                       mutex_lock(&fld->lsf_lock);
                        rc1 = fld_insert_entry(env, fld, &lsra->lsra_lsr[i]);
+                       mutex_unlock(&fld->lsf_lock);
+
                        if (rc1 != 0)
                                GOTO(out, rc = rc1);
                }
@@ -201,7 +203,7 @@ EXPORT_SYMBOL(fld_update_from_controller);
  * Lookup sequece in local cache/fldb.
  **/
 int fld_local_lookup(const struct lu_env *env, struct lu_server_fld *fld,
-                    seqno_t seq, struct lu_seq_range *range)
+                    u64 seq, struct lu_seq_range *range)
 {
        struct lu_seq_range *erange;
        struct fld_thread_info *info;
@@ -237,7 +239,7 @@ EXPORT_SYMBOL(fld_local_lookup);
  *  cache fld entries, but this cache is not persistent.
  */
 int fld_server_lookup(const struct lu_env *env, struct lu_server_fld *fld,
-                     seqno_t seq, struct lu_seq_range *range)
+                     u64 seq, struct lu_seq_range *range)
 {
        __u32 index;
        int rc;
@@ -254,12 +256,12 @@ int fld_server_lookup(const struct lu_env *env, struct lu_server_fld *fld,
        if (index == 0 && rc == LDD_F_SV_TYPE_MDT) {
                /* On server side, all entries should be in cache.
                 * If we can not find it in cache, just return error */
-               CERROR("%s: Cannot find sequence "LPX64": rc = %d\n",
+               CERROR("%s: Cannot find sequence %#llx: rc = %d\n",
                       fld->lsf_name, seq, -ENOENT);
                RETURN(-ENOENT);
        } else {
                if (fld->lsf_control_exp == NULL) {
-                       CERROR("%s: lookup "LPX64", but not connects to MDT0"
+                       CERROR("%s: lookup %#llx, but not connects to MDT0"
                               "yet: rc = %d.\n", fld->lsf_name, seq, -EIO);
                        RETURN(-EIO);
                }
@@ -332,7 +334,7 @@ static int fld_handle_read(struct tgt_session_info *tsi)
                RETURN(err_serious(-EPROTO));
 
        req_capsule_set_size(tsi->tsi_pill, &RMF_GENERIC_DATA, RCL_SERVER,
-                            PAGE_CACHE_SIZE);
+                            PAGE_SIZE);
 
        rc = req_capsule_server_pack(tsi->tsi_pill);
        if (unlikely(rc != 0))
@@ -341,7 +343,7 @@ static int fld_handle_read(struct tgt_session_info *tsi)
        data = req_capsule_server_get(tsi->tsi_pill, &RMF_GENERIC_DATA);
 
        rc = fld_server_read(tsi->tsi_env, lu_site2seq(site)->ss_server_fld,
-                            in, data, PAGE_CACHE_SIZE);
+                            in, data, PAGE_SIZE);
        RETURN(rc);
 }
 
@@ -390,19 +392,17 @@ int fid_is_local(const struct lu_env *env,
        }
        return result;
 }
-EXPORT_SYMBOL(fid_is_local);
 
 static void fld_server_proc_fini(struct lu_server_fld *fld);
 
-#ifdef LPROCFS
+#ifdef CONFIG_PROC_FS
 static int fld_server_proc_init(struct lu_server_fld *fld)
 {
         int rc = 0;
         ENTRY;
 
-       fld->lsf_proc_dir = lprocfs_seq_register(fld->lsf_name,
-                                                fld_type_proc_dir,
-                                                fld_server_proc_list, fld);
+       fld->lsf_proc_dir = lprocfs_register(fld->lsf_name, fld_type_proc_dir,
+                                            fld_server_proc_list, fld);
        if (IS_ERR(fld->lsf_proc_dir)) {
                rc = PTR_ERR(fld->lsf_proc_dir);
                RETURN(rc);
@@ -472,7 +472,9 @@ int fld_server_init(const struct lu_env *env, struct lu_server_fld *fld,
                GOTO(out_index, rc);
 
        fld->lsf_control_exp = NULL;
+       fld->lsf_seq_lookup = fld_server_lookup;
 
+       fld->lsf_seq_lookup = fld_server_lookup;
        RETURN(0);
 out_index:
        fld_index_fini(env, fld);