This source file includes following definitions.
- ADIOI_XFS_SetInfo
1
2
3
4
5
6
7
8 #include "ad_xfs.h"
9 #include "adio_extern.h"
10
11 static unsigned xfs_direct_read_chunk_size;
12 static unsigned xfs_direct_write_chunk_size;
13
14 void ADIOI_XFS_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code)
15 {
16 char *value, * c;
17 int flag;
18 static char xfs_initialized = 0;
19
20 if (fd->info == MPI_INFO_NULL) MPI_Info_create(&(fd->info));
21
22 ADIOI_Info_set(fd->info, "direct_read", "false");
23 ADIOI_Info_set(fd->info, "direct_write", "false");
24 fd->direct_read = fd->direct_write = 0;
25
26 if (!xfs_initialized) {
27 xfs_initialized = 1;
28 c = getenv("MPIO_DIRECT_READ_CHUNK_SIZE");
29 if (c) {
30 int io;
31 io = atoi(c);
32 if (io <= 0) {
33 fprintf(stderr,
34 "MPI: Ignoring an invalid setting for MPIO_DIRECT_READ_CHUNK_SIZE.\n"
35 " It must be set to a positive integer value.\n");
36 } else {
37 xfs_direct_read_chunk_size = io;
38 }
39 } else {
40 xfs_direct_read_chunk_size = 0;
41 }
42
43 c = getenv("MPIO_DIRECT_WRITE_CHUNK_SIZE");
44 if (c) {
45 int io;
46 io = atoi(c);
47 if (io <= 0) {
48 fprintf(stderr,
49 "MPI: Ignoring an invalid setting for MPIO_DIRECT_WRITE_CHUNK_SIZE.\n"
50 " It must be set to a positive integer value.\n");
51 } else {
52 xfs_direct_write_chunk_size = io;
53 }
54 } else {
55 xfs_direct_write_chunk_size = 0;
56 }
57 }
58
59 if (!fd->hints->initialized) {
60 fd->hints->fs_hints.xfs.read_chunk_sz =
61 xfs_direct_read_chunk_size;
62 fd->hints->fs_hints.xfs.write_chunk_sz =
63 xfs_direct_write_chunk_size;
64 }
65
66
67 if (users_info != MPI_INFO_NULL) {
68 value = (char *) ADIOI_Malloc((MPI_MAX_INFO_VAL+1)*sizeof(char));
69
70 ADIOI_Info_get(users_info, "direct_read", MPI_MAX_INFO_VAL,
71 value, &flag);
72 if (flag && !strcmp(value, "true")) {
73 ADIOI_Info_set(fd->info, "direct_read", "true");
74 fd->direct_read = 1;
75 }
76
77 ADIOI_Info_get(users_info, "direct_write", MPI_MAX_INFO_VAL,
78 value, &flag);
79 if (flag && !strcmp(value, "true")) {
80 ADIOI_Info_set(fd->info, "direct_write", "true");
81 fd->direct_write = 1;
82 }
83
84 ADIOI_Free(value);
85 }
86
87
88 ADIOI_GEN_SetInfo(fd, users_info, error_code);
89
90
91 if (ADIOI_Direct_read) fd->direct_read = 1;
92 if (ADIOI_Direct_write) fd->direct_write = 1;
93
94
95
96 *error_code = MPI_SUCCESS;
97 }