IOR
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
aiori.h File Reference
#include <sys/stat.h>
#include <stdbool.h>
#include "iordef.h"
#include "aiori-debug.h"
#include "option.h"
Include dependency graph for aiori.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ior_aiori_statfs
 
struct  aiori_xfer_hint_t
 
struct  aiori_mod_opt_t
 
struct  aiori_fd_t
 
struct  ior_aiori
 

Macros

#define IOR_RDONLY   0x01 /* read only */
 
#define IOR_WRONLY   0x02 /* write only */
 
#define IOR_RDWR   0x04 /* read/write */
 
#define IOR_APPEND   0x08 /* append */
 
#define IOR_CREAT   0x10 /* create */
 
#define IOR_TRUNC   0x20 /* truncate */
 
#define IOR_EXCL   0x40 /* exclusive */
 
#define IOR_DIRECT   0x80 /* bypass I/O buffers */
 
#define IOR_IRWXU   0x0001 /* read, write, execute perm: owner */
 
#define IOR_IRUSR   0x0002 /* read permission: owner */
 
#define IOR_IWUSR   0x0004 /* write permission: owner */
 
#define IOR_IXUSR   0x0008 /* execute permission: owner */
 
#define IOR_IRWXG   0x0010 /* read, write, execute perm: group */
 
#define IOR_IRGRP   0x0020 /* read permission: group */
 
#define IOR_IWGRP   0x0040 /* write permission: group */
 
#define IOR_IXGRP   0x0080 /* execute permission: group */
 
#define IOR_IRWXO   0x0100 /* read, write, execute perm: other */
 
#define IOR_IROTH   0x0200 /* read permission: other */
 
#define IOR_IWOTH   0x0400 /* write permission: other */
 
#define IOR_IXOTH   0x0800 /* execute permission: other */
 

Typedefs

typedef struct ior_aiori_statfs ior_aiori_statfs_t
 
typedef struct aiori_xfer_hint_t aiori_xfer_hint_t
 
typedef struct aiori_fd_t aiori_fd_t
 
typedef struct ior_aiori ior_aiori_t
 

Enumerations

enum  bench_type { IOR, MDTEST }
 

Functions

const ior_aiori_taiori_select (const char *api)
 
int aiori_count (void)
 
void aiori_supported_apis (char *APIs, char *APIs_legacy, enum bench_type type)
 
options_all_tairoi_create_all_module_options (option_help *global_options)
 
void * airoi_update_module_options (const ior_aiori_t *backend, options_all_t *module_defaults)
 
const char * aiori_default (void)
 
char * aiori_get_version (void)
 
int aiori_posix_statfs (const char *path, ior_aiori_statfs_t *stat_buf, aiori_mod_opt_t *module_options)
 
int aiori_posix_mkdir (const char *path, mode_t mode, aiori_mod_opt_t *module_options)
 
int aiori_posix_rmdir (const char *path, aiori_mod_opt_t *module_options)
 
int aiori_posix_access (const char *path, int mode, aiori_mod_opt_t *module_options)
 
int aiori_posix_stat (const char *path, struct stat *buf, aiori_mod_opt_t *module_options)
 
void MPIIO_Delete (char *testFileName, aiori_mod_opt_t *module_options)
 
IOR_offset_t MPIIO_GetFileSize (aiori_mod_opt_t *options, char *testFileName)
 
int MPIIO_Access (const char *, int, aiori_mod_opt_t *module_options)
 
void MPIIO_xfer_hints (aiori_xfer_hint_t *params)
 

Variables

ior_aiori_t dummy_aiori
 
ior_aiori_t aio_aiori
 
ior_aiori_t daos_aiori
 
ior_aiori_t dfs_aiori
 
ior_aiori_t hdf5_aiori
 
ior_aiori_t hdfs_aiori
 
ior_aiori_t ime_aiori
 
ior_aiori_t mpiio_aiori
 
ior_aiori_t ncmpi_aiori
 
ior_aiori_t posix_aiori
 
ior_aiori_t pmdk_aiori
 
ior_aiori_t mmap_aiori
 
ior_aiori_t S3_libS3_aiori
 
ior_aiori_t s3_4c_aiori
 
ior_aiori_t s3_plus_aiori
 
ior_aiori_t s3_emc_aiori
 
ior_aiori_t rados_aiori
 
ior_aiori_t cephfs_aiori
 
ior_aiori_t gfarm_aiori
 

Macro Definition Documentation

◆ IOR_APPEND

#define IOR_APPEND   0x08 /* append */

Definition at line 31 of file aiori.h.

Referenced by CEPHFS_Open(), GetFileMode(), HDF5_Open(), HDFS_Create_Or_Open(), IME_Open(), and MPIIO_Open().

◆ IOR_CREAT

#define IOR_CREAT   0x10 /* create */

◆ IOR_DIRECT

#define IOR_DIRECT   0x80 /* bypass I/O buffers */

Definition at line 35 of file aiori.h.

Referenced by CEPHFS_Open(), GetFileMode(), HDF5_Open(), and MPIIO_Open().

◆ IOR_EXCL

#define IOR_EXCL   0x40 /* exclusive */

◆ IOR_IRGRP

#define IOR_IRGRP   0x0020 /* read permission: group */

Definition at line 43 of file aiori.h.

◆ IOR_IROTH

#define IOR_IROTH   0x0200 /* read permission: other */

Definition at line 47 of file aiori.h.

◆ IOR_IRUSR

#define IOR_IRUSR   0x0002 /* read permission: owner */

Definition at line 39 of file aiori.h.

◆ IOR_IRWXG

#define IOR_IRWXG   0x0010 /* read, write, execute perm: group */

Definition at line 42 of file aiori.h.

◆ IOR_IRWXO

#define IOR_IRWXO   0x0100 /* read, write, execute perm: other */

Definition at line 46 of file aiori.h.

◆ IOR_IRWXU

#define IOR_IRWXU   0x0001 /* read, write, execute perm: owner */

Definition at line 38 of file aiori.h.

◆ IOR_IWGRP

#define IOR_IWGRP   0x0040 /* write permission: group */

Definition at line 44 of file aiori.h.

◆ IOR_IWOTH

#define IOR_IWOTH   0x0400 /* write permission: other */

Definition at line 48 of file aiori.h.

◆ IOR_IWUSR

#define IOR_IWUSR   0x0004 /* write permission: owner */

Definition at line 40 of file aiori.h.

◆ IOR_IXGRP

#define IOR_IXGRP   0x0080 /* execute permission: group */

Definition at line 45 of file aiori.h.

◆ IOR_IXOTH

#define IOR_IXOTH   0x0800 /* execute permission: other */

Definition at line 49 of file aiori.h.

◆ IOR_IXUSR

#define IOR_IXUSR   0x0008 /* execute permission: owner */

Definition at line 41 of file aiori.h.

◆ IOR_RDONLY

#define IOR_RDONLY   0x01 /* read only */

Definition at line 28 of file aiori.h.

Referenced by CEPHFS_Open(), GetFileMode(), HDF5_Open(), IME_Open(), MPIIO_Open(), run_benchmark(), and TestIoSys().

◆ IOR_RDWR

#define IOR_RDWR   0x04 /* read/write */

◆ IOR_TRUNC

#define IOR_TRUNC   0x20 /* truncate */

◆ IOR_WRONLY

#define IOR_WRONLY   0x02 /* write only */

Typedef Documentation

◆ aiori_fd_t

typedef struct aiori_fd_t aiori_fd_t

◆ aiori_xfer_hint_t

◆ ior_aiori_statfs_t

◆ ior_aiori_t

typedef struct ior_aiori ior_aiori_t

Enumeration Type Documentation

◆ bench_type

enum bench_type
Enumerator
IOR 
MDTEST 

Definition at line 118 of file aiori.h.

Function Documentation

◆ aiori_count()

int aiori_count ( void  )

Definition at line 291 of file aiori.c.

References available_aiori.

Referenced by aiori_default(), and airoi_create_all_module_options().

Here is the caller graph for this function:

◆ aiori_default()

const char* aiori_default ( void  )

Definition at line 296 of file aiori.c.

References aiori_count(), ior_aiori::name, and NULL.

Referenced by init_IOR_Param_t().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ aiori_get_version()

char* aiori_get_version ( void  )

Definition at line 232 of file aiori.c.

◆ aiori_posix_access()

int aiori_posix_access ( const char *  path,
int  mode,
aiori_mod_opt_t module_options 
)

Definition at line 222 of file aiori.c.

Referenced by aiori_select().

Here is the caller graph for this function:

◆ aiori_posix_mkdir()

int aiori_posix_mkdir ( const char *  path,
mode_t  mode,
aiori_mod_opt_t module_options 
)

Definition at line 212 of file aiori.c.

Referenced by aiori_select().

Here is the caller graph for this function:

◆ aiori_posix_rmdir()

int aiori_posix_rmdir ( const char *  path,
aiori_mod_opt_t module_options 
)

Definition at line 217 of file aiori.c.

Referenced by aiori_select().

Here is the caller graph for this function:

◆ aiori_posix_stat()

int aiori_posix_stat ( const char *  path,
struct stat *  buf,
aiori_mod_opt_t module_options 
)

Definition at line 227 of file aiori.c.

Referenced by aiori_select().

Here is the caller graph for this function:

◆ aiori_posix_statfs()

int aiori_posix_statfs ( const char *  path,
ior_aiori_statfs_t stat_buf,
aiori_mod_opt_t module_options 
)

Default statfs implementation.

Parameters
[in]pathPath to run statfs on
[out]statfs_bufAIORI statfs buffer

This function provides a AIORI statfs for POSIX-compliant filesystems. It uses statvfs is available and falls back on statfs.

Definition at line 166 of file aiori.c.

References ior_aiori_statfs::f_bfree, ior_aiori_statfs::f_blocks, ior_aiori_statfs::f_bsize, ior_aiori_statfs::f_ffree, ior_aiori_statfs::f_files, FALSE, and TRUE.

Referenced by aiori_select().

Here is the caller graph for this function:

◆ aiori_select()

const ior_aiori_t* aiori_select ( const char *  api)

Definition at line 237 of file aiori.c.

References aiori_posix_access(), aiori_posix_mkdir(), aiori_posix_rmdir(), aiori_posix_stat(), aiori_posix_statfs(), ior_aiori::name_legacy, NULL, and WARN.

Referenced by DecodeDirective(), md_workbench_run(), mdtest_run(), and updateParsedOptions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ aiori_supported_apis()

void aiori_supported_apis ( char *  APIs,
char *  APIs_legacy,
enum bench_type  type 
)

Definition at line 127 of file aiori.c.

References available_aiori, MDTEST, and NULL.

Referenced by createGlobalOptions(), and mdtest_run().

Here is the caller graph for this function:

◆ airoi_create_all_module_options()

options_all_t* airoi_create_all_module_options ( option_help global_options)

Definition at line 107 of file aiori.c.

References aiori_count(), available_aiori, option_module::defaults, global_options, options_all_t::module_count, options_all_t::modules, NULL, option_module::options, out_logfile, and option_module::prefix.

Referenced by md_workbench_run(), mdtest_run(), and ParseCommandLine().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ airoi_update_module_options()

void* airoi_update_module_options ( const ior_aiori_t backend,
options_all_t module_defaults 
)

◆ MPIIO_Access()

int MPIIO_Access ( const char *  ,
int  ,
aiori_mod_opt_t module_options 
)

Definition at line 139 of file aiori-MPIIO.c.

References aiori_xfer_hint_t::dryRun, mpiio_options_t::hintsFileName, MPI_CHECK, and SetHints().

Referenced by HDF5_Access(), and NCMPI_Access().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MPIIO_Delete()

void MPIIO_Delete ( char *  testFileName,
aiori_mod_opt_t module_options 
)

Definition at line 521 of file aiori-MPIIO.c.

References aiori_xfer_hint_t::dryRun, and MPI_CHECKF.

Referenced by HDF5_Delete(), and NCMPI_Delete().

Here is the caller graph for this function:

◆ MPIIO_GetFileSize()

IOR_offset_t MPIIO_GetFileSize ( aiori_mod_opt_t options,
char *  testFileName 
)

Definition at line 588 of file aiori-MPIIO.c.

References aiori_xfer_hint_t::dryRun, aiori_xfer_hint_t::filePerProc, mpiio_options_t::hintsFileName, MPI_CHECK, SetHints(), testComm, and TRUE.

Referenced by HDF5_GetFileSize(), and NCMPI_GetFileSize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MPIIO_xfer_hints()

void MPIIO_xfer_hints ( aiori_xfer_hint_t params)

Definition at line 111 of file aiori-MPIIO.c.

Referenced by HDF5_init_xfer_options(), and NCMPI_xfer_hints().

Here is the caller graph for this function:

Variable Documentation

◆ aio_aiori

ior_aiori_t aio_aiori

Definition at line 234 of file aiori-aio.c.

◆ cephfs_aiori

ior_aiori_t cephfs_aiori

Definition at line 83 of file aiori-CEPHFS.c.

◆ daos_aiori

ior_aiori_t daos_aiori

◆ dfs_aiori

ior_aiori_t dfs_aiori

Definition at line 133 of file aiori-DFS.c.

◆ dummy_aiori

ior_aiori_t dummy_aiori

Definition at line 182 of file aiori-DUMMY.c.

◆ gfarm_aiori

ior_aiori_t gfarm_aiori

Definition at line 297 of file aiori-Gfarm.c.

◆ hdf5_aiori

ior_aiori_t hdf5_aiori

Definition at line 141 of file aiori-HDF5.c.

◆ hdfs_aiori

ior_aiori_t hdfs_aiori

Definition at line 123 of file aiori-HDFS.c.

◆ ime_aiori

ior_aiori_t ime_aiori

Definition at line 102 of file aiori-IME.c.

◆ mmap_aiori

ior_aiori_t mmap_aiori

Definition at line 41 of file aiori-MMAP.c.

◆ mpiio_aiori

ior_aiori_t mpiio_aiori

Definition at line 87 of file aiori-MPIIO.c.

◆ ncmpi_aiori

ior_aiori_t ncmpi_aiori

Definition at line 100 of file aiori-NCMPI.c.

◆ pmdk_aiori

ior_aiori_t pmdk_aiori

Definition at line 53 of file aiori-PMDK.c.

◆ posix_aiori

ior_aiori_t posix_aiori

Definition at line 160 of file aiori-POSIX.c.

◆ rados_aiori

ior_aiori_t rados_aiori

Definition at line 68 of file aiori-RADOS.c.

◆ s3_4c_aiori

ior_aiori_t s3_4c_aiori

Definition at line 178 of file aiori-S3-4c.c.

◆ s3_emc_aiori

ior_aiori_t s3_emc_aiori

Definition at line 217 of file aiori-S3-4c.c.

◆ S3_libS3_aiori

ior_aiori_t S3_libS3_aiori

Definition at line 531 of file aiori-S3-libs3.c.

◆ s3_plus_aiori

ior_aiori_t s3_plus_aiori

Definition at line 200 of file aiori-S3-4c.c.