1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
2 /*
3 * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
4 * University Research and Technology
5 * Corporation. All rights reserved.
6 * Copyright (c) 2004-2005 The University of Tennessee and The University
7 * of Tennessee Research Foundation. All rights
8 * reserved.
9 * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
10 * University of Stuttgart. All rights reserved.
11 * Copyright (c) 2004-2005 The Regents of the University of California.
12 * All rights reserved.
13 * Copyright (c) 2008-2011 University of Houston. All rights reserved.
14 * Copyright (c) 2015 Los Alamos National Security, LLC. All rights
15 * reserved.
16 * $COPYRIGHT$
17 *
18 * Additional copyrights may follow
19 *
20 * $HEADER$
21 *
22 * These symbols are in a file by themselves to provide nice linker
23 * semantics. Since linkers generally pull in symbols by object
24 * files, keeping these symbols as the only symbols in this file
25 * prevents utility programs such as "ompi_info" from having to import
26 * entire components just to query their version and parameters.
27 */
28
29 #include "ompi_config.h"
30 #include "fs_lustre.h"
31 #include "mpi.h"
32
33 /*
34 * Public string showing the fs lustre component version number
35 */
36 const char *mca_fs_lustre_component_version_string =
37 "OMPI/MPI lustre FS MCA component version " OMPI_VERSION;
38
39 static int lustre_register(void);
40
41 int mca_fs_lustre_priority = 20;
42 /*setting default stripe size
43 to 64KB. MCA parameter
44 Can be changed at
45 runtime also*/
46 int mca_fs_lustre_stripe_size = 0;
47 int mca_fs_lustre_stripe_width = 0;
48 /*
49 * Instantiate the public struct with all of our public information
50 * and pointers to our public functions in it
51 */
52 mca_fs_base_component_2_0_0_t mca_fs_lustre_component = {
53
54 /* First, the mca_component_t struct containing meta information
55 about the component itself */
56
57 .fsm_version = {
58 MCA_FS_BASE_VERSION_2_0_0,
59
60 /* Component name and version */
61 .mca_component_name = "lustre",
62 MCA_BASE_MAKE_VERSION(component, OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION,
63 OMPI_RELEASE_VERSION),
64 .mca_register_component_params = lustre_register,
65 },
66 .fsm_data = {
67 /* This component is checkpointable */
68 MCA_BASE_METADATA_PARAM_CHECKPOINT
69 },
70 .fsm_init_query = mca_fs_lustre_component_init_query, /* get thread level */
71 .fsm_file_query = mca_fs_lustre_component_file_query, /* get priority and actions */
72 .fsm_file_unquery = mca_fs_lustre_component_file_unquery, /* undo what was done by previous function */
73 };
74
75 static int
76 lustre_register(void)
77 {
78 mca_fs_lustre_priority = 20;
79 (void) mca_base_component_var_register(&mca_fs_lustre_component.fsm_version,
80 "priority", "Priority of the lustre fs component",
81 MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
82 OPAL_INFO_LVL_9,
83 MCA_BASE_VAR_SCOPE_READONLY, &mca_fs_lustre_priority);
84 mca_fs_lustre_stripe_size = 0;
85 (void) mca_base_component_var_register(&mca_fs_lustre_component.fsm_version,
86 "stripe_size", "stripe size of a file over lustre",
87 MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
88 OPAL_INFO_LVL_9,
89 MCA_BASE_VAR_SCOPE_READONLY, &mca_fs_lustre_stripe_size);
90 mca_fs_lustre_stripe_width = 0;
91 (void) mca_base_component_var_register(&mca_fs_lustre_component.fsm_version,
92 "stripe_width", "stripe count of a file over lustre",
93 MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
94 OPAL_INFO_LVL_9,
95 MCA_BASE_VAR_SCOPE_READONLY, &mca_fs_lustre_stripe_width);
96
97 return OMPI_SUCCESS;
98 }