+#else
+#define nodemap_test_nid(nid, name_buf, name_len) do {} while(0)
+#endif
+int nodemap_test_id(lnet_nid_t nid, enum nodemap_id_type idtype,
+ __u32 client_id, __u32 *fs_id);
+
+struct nm_config_file *nm_config_file_register_mgs(const struct lu_env *env,
+ struct dt_object *obj,
+ struct local_oid_storage *los);
+struct dt_device;
+struct nm_config_file *nm_config_file_register_tgt(const struct lu_env *env,
+ struct dt_device *dev,
+ struct local_oid_storage *los);
+void nm_config_file_deregister_mgs(const struct lu_env *env,
+ struct nm_config_file *ncf);
+void nm_config_file_deregister_tgt(const struct lu_env *env,
+ struct nm_config_file *ncf);
+struct lu_nodemap *nodemap_get_from_exp(struct obd_export *exp);
+void nodemap_putref(struct lu_nodemap *nodemap);
+
+#ifdef HAVE_SERVER_SUPPORT
+struct nodemap_range_tree {
+ struct interval_node *nmrt_range_interval_root;
+ unsigned int nmrt_range_highest_id;
+};
+
+struct nodemap_config {
+ /* Highest numerical lu_nodemap.nm_id defined */
+ unsigned int nmc_nodemap_highest_id;
+
+ /* Simple flag to determine if nodemaps are active */
+ bool nmc_nodemap_is_active;
+
+ /* Pointer to default nodemap as it is needed more often */
+ struct lu_nodemap *nmc_default_nodemap;
+
+ /**
+ * Lock required to access the range tree.
+ */
+ struct rw_semaphore nmc_range_tree_lock;
+ struct nodemap_range_tree nmc_range_tree;
+
+ /**
+ * Hash keyed on nodemap name containing all
+ * nodemaps
+ */
+ struct cfs_hash *nmc_nodemap_hash;
+};
+
+struct nodemap_config *nodemap_config_alloc(void);
+void nodemap_config_dealloc(struct nodemap_config *config);
+void nodemap_config_set_active_mgc(struct nodemap_config *config);
+
+int nodemap_process_idx_pages(struct nodemap_config *config, union lu_page *lip,
+ struct lu_nodemap **recent_nodemap);
+
+#else /* disable nodemap processing in MGC of non-servers */
+static inline int nodemap_process_idx_pages(void *config,
+ union lu_page *lip,
+ struct lu_nodemap **recent_nodemap)
+{ return 0; }
+#endif /* HAVE_SERVER_SUPPORT */
+
+int nodemap_get_config_req(struct obd_device *mgs_obd,
+ struct ptlrpc_request *req);