X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fmgs%2Fmgs_internal.h;h=46979e9f59be82f4d2105b44ab92c6bc428a0baf;hb=019a3b34c0f4d934266a185bcda048b1dab201ed;hp=0d6def9b4f773202d0aa494a2d01d8f3844b384b;hpb=0754bc8f2623bea184111af216f7567608db35b6;p=fs%2Flustre-release.git diff --git a/lustre/mgs/mgs_internal.h b/lustre/mgs/mgs_internal.h index 0d6def9..46979e9 100644 --- a/lustre/mgs/mgs_internal.h +++ b/lustre/mgs/mgs_internal.h @@ -15,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 */ @@ -27,7 +23,7 @@ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2011, 2015, Intel Corporation. + * Copyright (c) 2011, 2016, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -121,16 +117,22 @@ struct mgs_tgt_srpc_conf { #define FSDB_REVOKING_PARAMS (6) /* DLM lock is being revoked */ struct fs_db { - char fsdb_name[9]; + char fsdb_name[20]; struct list_head fsdb_list; /* list of databases */ struct mutex fsdb_mutex; - void *fsdb_ost_index_map; /* bitmap of used indicies */ + union { + void *fsdb_ost_index_map; /* bitmap of used indicies */ + void *fsdb_barrier_map; /* bitmap of barrier */ + }; void *fsdb_mdt_index_map; /* bitmap of used indicies */ + atomic_t fsdb_ref; int fsdb_mdt_count; char *fsdb_clilov; /* COMPAT_146 client lov name */ char *fsdb_clilmv; unsigned long fsdb_flags; - __u32 fsdb_gen; + __u32 fsdb_barrier_status; + __u32 fsdb_barrier_timeout; + time_t fsdb_barrier_latest_create_time; /* in-memory copy of the srpc rules, guarded by fsdb_lock */ struct sptlrpc_rule_set fsdb_srpc_gen; @@ -151,11 +153,14 @@ struct fs_db { cfs_time_t fsdb_notify_start; atomic_t fsdb_notify_phase; volatile unsigned int fsdb_notify_async:1, - fsdb_notify_stop:1; - /* statistic data */ - unsigned int fsdb_notify_total; - unsigned int fsdb_notify_max; - unsigned int fsdb_notify_count; + fsdb_notify_stop:1, + fsdb_has_lproc_entry:1, + fsdb_barrier_disabled:1; + /* statistic data */ + unsigned int fsdb_notify_total; + unsigned int fsdb_notify_max; + unsigned int fsdb_notify_count; + __u32 fsdb_gen; }; struct mgs_device { @@ -176,6 +181,7 @@ struct mgs_device { struct local_oid_storage *mgs_los; struct mutex mgs_mutex; struct mutex mgs_health_mutex; + struct rw_semaphore mgs_barrier_rwsem; struct lu_target mgs_lut; }; @@ -189,20 +195,17 @@ struct mgs_object { int mgs_init_fsdb_list(struct mgs_device *mgs); int mgs_cleanup_fsdb_list(struct mgs_device *mgs); -int mgs__mgs_fsdb_setup(const struct lu_env *env, struct mgs_device *mgs, - struct fs_db *fsdb); -int mgs_params_fsdb_setup(const struct lu_env *env, struct mgs_device *mgs, - struct fs_db *fsdb); +int mgs__mgs_fsdb_setup(const struct lu_env *env, struct mgs_device *mgs); +int mgs_params_fsdb_setup(const struct lu_env *env, struct mgs_device *mgs); int mgs_params_fsdb_cleanup(const struct lu_env *env, struct mgs_device *mgs); int mgs_find_or_make_fsdb(const struct lu_env *env, struct mgs_device *mgs, char *name, struct fs_db **dbh); -struct fs_db *mgs_find_fsdb(struct mgs_device *mgs, char *fsname); +struct fs_db *mgs_find_fsdb(struct mgs_device *mgs, const char *fsname); +void mgs_put_fsdb(struct mgs_device *mgs, struct fs_db *fsdb); int mgs_get_fsdb_srpc_from_llog(const struct lu_env *env, struct mgs_device *mgs, struct fs_db *fsdb); int mgs_check_index(const struct lu_env *env, struct mgs_device *mgs, struct mgs_target_info *mti); -int mgs_check_failnid(const struct lu_env *env, struct mgs_device *mgs, - struct mgs_target_info *mti); int mgs_write_log_target(const struct lu_env *env, struct mgs_device *mgs, struct mgs_target_info *mti, struct fs_db *fsdb); int mgs_replace_nids(const struct lu_env *env, struct mgs_device *mgs, @@ -210,7 +213,7 @@ int mgs_replace_nids(const struct lu_env *env, struct mgs_device *mgs, int mgs_erase_log(const struct lu_env *env, struct mgs_device *mgs, char *name); int mgs_erase_logs(const struct lu_env *env, struct mgs_device *mgs, - char *fsname); + const char *fsname); int mgs_setparam(const struct lu_env *env, struct mgs_device *mgs, struct lustre_cfg *lcfg, char *fsname); int mgs_list_logs(const struct lu_env *env, struct mgs_device *mgs, @@ -236,11 +239,11 @@ int mgs_ir_init_fs(const struct lu_env *env, struct mgs_device *mgs, void mgs_ir_fini_fs(struct mgs_device *mgs, struct fs_db *fsdb); void mgs_ir_notify_complete(struct fs_db *fsdb); int mgs_get_ir_logs(struct ptlrpc_request *req); -int lprocfs_wr_ir_state(struct file *file, const char *buffer, +int lprocfs_wr_ir_state(struct file *file, const char __user *buffer, size_t count, void *data); int lprocfs_rd_ir_state(struct seq_file *seq, void *data); ssize_t -lprocfs_ir_timeout_seq_write(struct file *file, const char *buffer, +lprocfs_ir_timeout_seq_write(struct file *file, const char __user *buffer, size_t count, loff_t *off); int lprocfs_ir_timeout_seq_show(struct seq_file *seq, void *data); void mgs_fsc_cleanup(struct obd_export *exp);