5 #include <gfarm/gfarm.h> 39 e = gfs_pio_create(fn, GFARM_FILE_RDWR, 0664, &gf);
40 if (e != GFARM_ERR_NO_ERROR)
41 ERR(
"gfs_pio_create failed");
59 e = gfs_pio_open(fn, GFARM_FILE_RDWR, &gf);
60 if (e != GFARM_ERR_NO_ERROR)
61 ERR(
"gfs_pio_open failed");
77 #define MAX_SZ (1024 * 1024 * 1024) 79 char *buf = (
char *)buffer;
89 e = gfs_pio_seek(fp->
gf, param->
offset, GFARM_SEEK_SET, &off);
90 if (e != GFARM_ERR_NO_ERROR)
91 ERR(
"gfs_pio_seek failed");
94 e = gfs_pio_write(fp->
gf, buf, sz, &n);
96 e = gfs_pio_read(fp->
gf, buf, sz, &n);
97 if (e != GFARM_ERR_NO_ERROR)
100 ERR(
"EOF encountered");
115 if (gfs_pio_close(fp->
gf) != GFARM_ERR_NO_ERROR)
116 ERR(
"gfs_pio_close failed");
129 if (e != GFARM_ERR_NO_ERROR)
130 errno = gfarm_error_to_errno(e);
136 return ((
char *)gfarm_version());
147 if (gfs_pio_sync(fp->
gf) != GFARM_ERR_NO_ERROR)
148 ERR(
"gfs_pio_sync failed");
160 if (gfs_stat(fn, &st) != GFARM_ERR_NO_ERROR)
161 ERR(
"gfs_stat failed");
166 MPI_CHECK(MPI_Allreduce(&size, &sum, 1, MPI_LONG_LONG_INT,
167 MPI_SUM, comm),
"cannot total data moved");
170 MPI_CHECK(MPI_Allreduce(&size, &min, 1, MPI_LONG_LONG_INT,
171 MPI_MIN, comm),
"cannot total data moved");
172 MPI_CHECK(MPI_Allreduce(&size, &max, 1, MPI_LONG_LONG_INT,
173 MPI_MAX, comm),
"cannot total data moved");
176 WARN(
"inconsistent file size by different " 188 gfarm_off_t used, avail, files;
195 e = gfs_statfs_by_path(fn, &used, &avail, &files);
196 if (e != GFARM_ERR_NO_ERROR) {
197 errno = gfarm_error_to_errno(e);
201 st->
f_blocks = (used + avail) / bsize;
216 e = gfs_mkdir(fn, mode);
217 if (e == GFARM_ERR_NO_ERROR)
219 errno = gfarm_error_to_errno(e);
232 if (e == GFARM_ERR_NO_ERROR)
234 errno = gfarm_error_to_errno(e);
247 e = gfs_stat(fn, &st);
248 if (e != GFARM_ERR_NO_ERROR) {
249 errno = gfarm_error_to_errno(e);
257 #define GFS_DEV ((dev_t)-1) 258 #define GFS_BLKSIZE 8192 259 #define STAT_BLKSIZ 512 270 e = gfs_stat(fn, &st);
271 if (e != GFARM_ERR_NO_ERROR) {
272 errno = gfarm_error_to_errno(e);
276 buf->st_ino = st.st_ino;
277 buf->st_mode = st.st_mode;
278 buf->st_nlink = st.st_nlink;
279 buf->st_uid = getuid();
280 buf->st_gid = getgid();
281 buf->st_size = st.st_size;
284 buf->st_atime = st.st_atimespec.tv_sec;
285 buf->st_mtime = st.st_mtimespec.tv_sec;
286 buf->st_ctime = st.st_ctimespec.tv_sec;
287 #if defined(HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC) 288 buf->st_atim.tv_nsec = st.st_atimespec.tv_nsec;
289 buf->st_mtim.tv_nsec = st.st_mtimespec.tv_nsec;
290 buf->st_ctim.tv_nsec = st.st_ctimespec.tv_nsec;
315 .enable_mdtest =
true,
void * Gfarm_open(char *fn, IOR_param_t *param)
void Gfarm_fsync(void *fd, IOR_param_t *param)
void Gfarm_delete(char *fn, IOR_param_t *param)
void * Gfarm_create(char *fn, IOR_param_t *param)
IOR_offset_t Gfarm_get_file_size(IOR_param_t *param, MPI_Comm comm, char *fn)
int Gfarm_statfs(const char *fn, ior_aiori_statfs_t *st, IOR_param_t *param)
#define MPI_CHECK(MPI_STATUS, MSG)
IOR_offset_t Gfarm_xfer(int access, void *fd, IOR_size_t *buffer, IOR_offset_t len, IOR_param_t *param)
int Gfarm_mkdir(const char *fn, mode_t mode, IOR_param_t *param)
void Gfarm_close(void *fd, IOR_param_t *param)
int Gfarm_rmdir(const char *fn, IOR_param_t *param)
int Gfarm_access(const char *fn, int mode, IOR_param_t *param)
int Gfarm_stat(const char *fn, struct stat *buf, IOR_param_t *param)
long long int IOR_offset_t