X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Flustre_fld.h;h=2f39962f8fb5ec33a545c95bead948d90ea6b611;hp=7189d2b355263ed4b6d5a5bcc44298e5aee8f233;hb=cbc084f9e06ca589768f5a84699b476721db9fd6;hpb=65701b4a30efdb695776bcf690a2b3cabc928da1 diff --git a/lustre/include/lustre_fld.h b/lustre/include/lustre_fld.h index 7189d2b..2f39962 100644 --- a/lustre/include/lustre_fld.h +++ b/lustre/include/lustre_fld.h @@ -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. @@ -17,11 +15,7 @@ * * You should have received a copy of the GNU General Public License * version 2 along with this program; If not, see - * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * http://www.gnu.org/licenses/gpl-2.0.html * * GPL HEADER END */ @@ -29,7 +23,7 @@ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2011, 2012, Whamcloud, Inc. + * Copyright (c) 2011, 2015, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -45,18 +39,17 @@ */ #include -#include -#include - #include +#include +struct lu_env; struct lu_client_fld; struct lu_server_fld; struct lu_fld_hash; struct fld_cache; - -extern const struct dt_index_features fld_index_features; -extern const char fld_index_name[]; +struct thandle; +struct dt_device; +struct dt_object; /* * FLD (Fid Location Database) interface. @@ -66,18 +59,17 @@ enum { LUSTRE_CLI_FLD_HASH_RRB }; - struct lu_fld_target { - cfs_list_t ft_chain; - struct obd_export *ft_exp; - struct lu_server_fld *ft_srv; - __u64 ft_idx; + struct list_head ft_chain; + struct obd_export *ft_exp; + struct lu_server_fld *ft_srv; + __u64 ft_idx; }; struct lu_server_fld { /** * Fld dir proc entry. */ - cfs_proc_dir_entry_t *lsf_proc_dir; + struct proc_dir_entry *lsf_proc_dir; /** * /fld file object device */ @@ -94,21 +86,34 @@ struct lu_server_fld { /** * Protect index modifications */ - cfs_mutex_t lsf_lock; + struct mutex lsf_lock; /** * Fld service name in form "fld-srv-lustre-MDTXXX" */ char lsf_name[80]; + + int (*lsf_seq_lookup)(const struct lu_env *env, + struct lu_server_fld *fld, u64 seq, + struct lu_seq_range *range); + + /** + * Just reformatted or upgraded, and this flag is being + * used to check whether the local FLDB is needs to be + * synced with global FLDB(in MDT0), and it is only needed + * if the MDT is upgraded from < 2.6 to 2.6, i.e. when the + * local FLDB is being invited */ + unsigned int lsf_new:1; + }; struct lu_client_fld { - /** - * Client side proc entry. */ - cfs_proc_dir_entry_t *lcf_proc_dir; + /** + * Client side proc entry. */ + struct proc_dir_entry *lcf_proc_dir; - /** - * List of exports client FLD knows about. */ - cfs_list_t lcf_targets; + /** + * List of exports client FLD knows about. */ + struct list_head lcf_targets; /** * Current hash to be used to chose an export. */ @@ -120,7 +125,7 @@ struct lu_client_fld { /** * Lock protecting exports list and fld_hash. */ - cfs_spinlock_t lcf_lock; + spinlock_t lcf_lock; /** * Client FLD cache. */ @@ -129,50 +134,36 @@ struct lu_client_fld { /** * Client fld proc entry name. */ char lcf_name[80]; - - const struct lu_context *lcf_ctx; - - int lcf_flags; }; -/** - * number of blocks to reserve for particular operations. Should be function of - * ... something. Stub for now. - */ -enum { - /* one insert operation can involve two delete and one insert */ - FLD_TXN_INDEX_INSERT_CREDITS = 60, - FLD_TXN_INDEX_DELETE_CREDITS = 20, -}; +/* Server methods */ +int fld_server_init(const struct lu_env *env, struct lu_server_fld *fld, + struct dt_device *dt, const char *prefix, int type); -int fld_query(struct com_thread_info *info); +void fld_server_fini(const struct lu_env *env, struct lu_server_fld *fld); -/* Server methods */ -int fld_server_init(struct lu_server_fld *fld, - struct dt_device *dt, - const char *prefix, - const struct lu_env *env, - int mds_node_id); +int fld_declare_server_create(const struct lu_env *env, + struct lu_server_fld *fld, + const struct lu_seq_range *range, + struct thandle *th); -void fld_server_fini(struct lu_server_fld *fld, - const struct lu_env *env); +int fld_server_create(const struct lu_env *env, + struct lu_server_fld *fld, + const struct lu_seq_range *add_range, + struct thandle *th); -int fld_declare_server_create(struct lu_server_fld *fld, - const struct lu_env *env, - struct thandle *th); +int fld_insert_entry(const struct lu_env *env, + struct lu_server_fld *fld, + const struct lu_seq_range *range); -int fld_server_create(struct lu_server_fld *fld, - const struct lu_env *env, - struct lu_seq_range *add_range, - struct thandle *th); +int fld_server_lookup(const struct lu_env *env, struct lu_server_fld *fld, + u64 seq, struct lu_seq_range *range); -int fld_server_delete(struct lu_server_fld *fld, - const struct lu_env *env, - struct lu_seq_range *range); +int fld_local_lookup(const struct lu_env *env, struct lu_server_fld *fld, + u64 seq, struct lu_seq_range *range); -int fld_server_lookup(struct lu_server_fld *fld, - const struct lu_env *env, - seqno_t seq, struct lu_seq_range *range); +int fld_update_from_controller(const struct lu_env *env, + struct lu_server_fld *fld); /* Client methods */ int fld_client_init(struct lu_client_fld *fld, @@ -182,15 +173,14 @@ void fld_client_fini(struct lu_client_fld *fld); void fld_client_flush(struct lu_client_fld *fld); -int fld_client_lookup(struct lu_client_fld *fld, seqno_t seq, mdsno_t *mds, +int fld_client_lookup(struct lu_client_fld *fld, u64 seq, u32 *mds, __u32 flags, const struct lu_env *env); int fld_client_create(struct lu_client_fld *fld, struct lu_seq_range *range, const struct lu_env *env); -int fld_client_delete(struct lu_client_fld *fld, - seqno_t seq, +int fld_client_delete(struct lu_client_fld *fld, u64 seq, const struct lu_env *env); int fld_client_add_target(struct lu_client_fld *fld,