* 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, 2014, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
#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"
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);
}
* 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;
* 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;
rc = fld_name_to_index(fld->lsf_name, &index);
if (rc < 0)
RETURN(rc);
- else
- rc = 0;
- if (index == 0) {
+ 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",
- fld->lsf_name, seq, -EIO);
- RETURN(-EIO);
+ fld->lsf_name, seq, -ENOENT);
+ RETURN(-ENOENT);
} else {
if (fld->lsf_control_exp == NULL) {
CERROR("%s: lookup "LPX64", but not connects to MDT0"
}
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);
RETURN(rc);
}
- rc = fld_index_init(env, fld, dt);
+ rc = fld_index_init(env, fld, dt, type);
if (rc)
GOTO(out_cache, rc);
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);