Whamcloud - gitweb
LU-17705 ptlrpc: replace synchronize_rcu() with rcu_barrier()
[fs/lustre-release.git] / lustre / mgc / mgc_internal.h
index 292a212..022320c 100644 (file)
  *
  * 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
  */
  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, Intel Corporation.
+ * Copyright (c) 2011, 2017, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
  */
 
 #ifndef _MGC_INTERNAL_H
 #define _MGC_INTERNAL_H
 
 #include <libcfs/libcfs.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_lib.h>
 #include <lustre_dlm.h>
 #include <lustre_log.h>
 #include <lustre_export.h>
+#ifdef HAVE_SERVER_SUPPORT
+#include <lustre_nodemap.h>
+#endif
 
-#ifdef LPROCFS
-extern struct lprocfs_seq_vars lprocfs_mgc_obd_vars[];
+int mgc_tunables_init(struct obd_device *obd);
 int lprocfs_mgc_rd_ir_state(struct seq_file *m, void *data);
-#endif  /* LPROCFS */
 
 int mgc_process_log(struct obd_device *mgc, struct config_llog_data *cld);
 
-static inline int cld_is_sptlrpc(struct config_llog_data *cld)
+/* this timeout represents how many seconds MGC should wait before
+ * requeue config and recover lock to the MGS. We need to randomize this
+ * in order to not flood the MGS.
+ */
+#define MGC_TIMEOUT_MIN_SECONDS                5
+
+extern unsigned int mgc_requeue_timeout_min;
+
+static inline bool cld_is_sptlrpc(struct config_llog_data *cld)
+{
+       return cld->cld_type == MGS_CFG_T_SPTLRPC;
+}
+
+static inline bool cld_is_recover(struct config_llog_data *cld)
 {
-        return cld->cld_type == CONFIG_T_SPTLRPC;
+       return cld->cld_type == MGS_CFG_T_RECOVER;
 }
 
-static inline int cld_is_recover(struct config_llog_data *cld)
+static inline bool cld_is_nodemap(struct config_llog_data *cld)
 {
-        return cld->cld_type == CONFIG_T_RECOVER;
+#ifdef HAVE_SERVER_SUPPORT
+       return cld->cld_type == MGS_CFG_T_NODEMAP;
+#else
+       return false;
+#endif
 }
 
+static inline bool cld_is_barrier(struct config_llog_data *cld)
+{
+#ifdef HAVE_SERVER_SUPPORT
+       return cld->cld_type == MGS_CFG_T_BARRIER;
+#else
+       return false;
+#endif
+}
+
+#ifdef HAVE_SERVER_SUPPORT
+int mgc_set_info_async_server(const struct lu_env *env,
+                             struct obd_export *exp,
+                             u32 keylen, void *key,
+                             u32 vallen, void *val,
+                             struct ptlrpc_request_set *set);
+int mgc_process_nodemap_log(struct obd_device *obd,
+                           struct config_llog_data *cld);
+int mgc_process_server_cfg_log(struct lu_env *env, struct llog_ctxt **ctxt,
+                              struct lustre_sb_info *lsi,
+                              struct obd_device *mgc,
+                              struct config_llog_data *cld,
+                              int local_only);
+int mgc_process_config_server(struct obd_device *obd, size_t len, void *buf);
+int mgc_barrier_glimpse_ast(struct ldlm_lock *lock, void *data);
+#else /* HAVE_SERVER_SUPPORT */
+#define mgc_barrier_glimpse_ast NULL
+#endif /* HAVE_SERVER_SUPPORT */
+
+/* Not sure where this should go... */
+/* This is the timeout value for MGS_CONNECT request plus a ping interval, such
+ * that we can have a chance to try the secondary MGS if any.
+ */
+#define  MGC_ENQUEUE_LIMIT(obd) (INITIAL_CONNECT_TIMEOUT + \
+                                (obd_at_off(obd) ? 0 : obd_get_at_min(obd)) + \
+                                PING_INTERVAL)
+#define  MGC_TARGET_REG_LIMIT 10
+#define  MGC_TARGET_REG_LIMIT_MAX RECONNECT_DELAY_MAX
+#define  MGC_SEND_PARAM_LIMIT 10
+
+enum {
+       CONFIG_READ_NRPAGES_INIT = 1 << (20 - PAGE_SHIFT),
+       CONFIG_READ_NRPAGES      = 4
+};
+
 #endif  /* _MGC_INTERNAL_H */