Refactored fd into aiori_fd_t for type safety.

master
Julian M. Kunkel 2020-05-31 12:11:00 +01:00
parent c4c19d3245
commit 8098c3740a
8 changed files with 75 additions and 71 deletions

View File

@ -48,7 +48,7 @@ static option_help * DUMMY_options(aiori_mod_opt_t ** init_backend_options, aior
static int count_init = 0;
static void *DUMMY_Create(char *testFileName, int iorflags, aiori_mod_opt_t * options)
static aiori_fd_t *DUMMY_Create(char *testFileName, int iorflags, aiori_mod_opt_t * options)
{
if(count_init <= 0){
ERR("DUMMY missing initialization in create\n");
@ -63,10 +63,10 @@ static void *DUMMY_Create(char *testFileName, int iorflags, aiori_mod_opt_t * op
nanosleep( & wait, NULL);
}
}
return current++;
return (aiori_fd_t*) current++;
}
static void *DUMMY_Open(char *testFileName, int flags, aiori_mod_opt_t * options)
static aiori_fd_t *DUMMY_Open(char *testFileName, int flags, aiori_mod_opt_t * options)
{
if(count_init <= 0){
ERR("DUMMY missing initialization in open\n");
@ -74,10 +74,10 @@ static void *DUMMY_Open(char *testFileName, int flags, aiori_mod_opt_t * options
if(verbose > 4){
fprintf(out_logfile, "DUMMY open: %s = %p\n", testFileName, current);
}
return current++;
return (aiori_fd_t*) current++;
}
static void DUMMY_Fsync(void *fd, aiori_mod_opt_t * options)
static void DUMMY_Fsync(aiori_fd_t *fd, aiori_mod_opt_t * options)
{
if(verbose > 4){
fprintf(out_logfile, "DUMMY fsync %p\n", fd);
@ -89,7 +89,7 @@ static void DUMMY_Sync(aiori_mod_opt_t * options)
{
}
static void DUMMY_Close(void *fd, aiori_mod_opt_t * options)
static void DUMMY_Close(aiori_fd_t *fd, aiori_mod_opt_t * options)
{
if(verbose > 4){
fprintf(out_logfile, "DUMMY close %p\n", fd);
@ -116,7 +116,7 @@ static IOR_offset_t DUMMY_GetFileSize(aiori_mod_opt_t * options, MPI_Comm testCo
return 0;
}
static IOR_offset_t DUMMY_Xfer(int access, void *file, IOR_size_t * buffer, IOR_offset_t length, aiori_mod_opt_t * options){
static IOR_offset_t DUMMY_Xfer(int access, aiori_fd_t *file, IOR_size_t * buffer, IOR_offset_t length, aiori_mod_opt_t * options){
if(verbose > 4){
fprintf(out_logfile, "DUMMY xfer: %p\n", file);
}

View File

@ -83,14 +83,14 @@
static IOR_offset_t SeekOffset(void *, IOR_offset_t, aiori_mod_opt_t *);
static void SetupDataSet(void *, aiori_mod_opt_t *);
static void *HDF5_Create(char *, int flags, aiori_mod_opt_t *);
static void *HDF5_Open(char *, int flags, aiori_mod_opt_t *);
static IOR_offset_t HDF5_Xfer(int, void *, IOR_size_t *,
static aiori_fd_t *HDF5_Create(char *, int flags, aiori_mod_opt_t *);
static aiori_fd_t *HDF5_Open(char *, int flags, aiori_mod_opt_t *);
static IOR_offset_t HDF5_Xfer(int, aiori_fd_t *, IOR_size_t *,
IOR_offset_t, aiori_mod_opt_t *);
static void HDF5_Close(void *, aiori_mod_opt_t *);
static void HDF5_Close(aiori_fd_t *, aiori_mod_opt_t *);
static void HDF5_Delete(char *, aiori_mod_opt_t *);
static char* HDF5_GetVersion();
static void HDF5_Fsync(void *, aiori_mod_opt_t *);
static void HDF5_Fsync(aiori_fd_t *, aiori_mod_opt_t *);
static IOR_offset_t HDF5_GetFileSize(aiori_mod_opt_t *, MPI_Comm, char *);
static int HDF5_Access(const char *, int, aiori_mod_opt_t *);
static void HDF5_init_xfer_options(IOR_param_t * params);
@ -197,7 +197,7 @@ static int HDF5_check_params(aiori_mod_opt_t * options){
/*
* Create and open a file through the HDF5 interface.
*/
static void *HDF5_Create(char *testFileName, int flags, aiori_mod_opt_t * param)
static aiori_fd_t *HDF5_Create(char *testFileName, int flags, aiori_mod_opt_t * param)
{
return HDF5_Open(testFileName, flags, param);
}
@ -205,7 +205,7 @@ static void *HDF5_Create(char *testFileName, int flags, aiori_mod_opt_t * param)
/*
* Open a file through the HDF5 interface.
*/
static void *HDF5_Open(char *testFileName, int flags, aiori_mod_opt_t * param)
static aiori_fd_t *HDF5_Open(char *testFileName, int flags, aiori_mod_opt_t * param)
{
HDF5_options_t *o = (HDF5_options_t*) param;
hid_t accessPropList, createPropList;
@ -410,13 +410,13 @@ static void *HDF5_Open(char *testFileName, int flags, aiori_mod_opt_t * param)
if (mpiHints != MPI_INFO_NULL)
MPI_Info_free(&mpiHints);
return (fd);
return (aiori_fd_t*)(fd);
}
/*
* Write or read access to file using the HDF5 interface.
*/
static IOR_offset_t HDF5_Xfer(int access, void *fd, IOR_size_t * buffer,
static IOR_offset_t HDF5_Xfer(int access, aiori_fd_t *fd, IOR_size_t * buffer,
IOR_offset_t length, aiori_mod_opt_t * param)
{
static int firstReadCheck = FALSE, startNewDataSet;
@ -495,15 +495,14 @@ static IOR_offset_t HDF5_Xfer(int access, void *fd, IOR_size_t * buffer,
/*
* Perform fsync().
*/
static void HDF5_Fsync(void *fd, aiori_mod_opt_t * param)
static void HDF5_Fsync(aiori_fd_t *fd, aiori_mod_opt_t * param)
{
;
}
/*
* Close a file through the HDF5 interface.
*/
static void HDF5_Close(void *fd, aiori_mod_opt_t * param)
static void HDF5_Close(aiori_fd_t *fd, aiori_mod_opt_t * param)
{
if(ior_param->dryRun)
return;

View File

@ -26,12 +26,12 @@
#include "utilities.h"
/**************************** P R O T O T Y P E S *****************************/
static void *MMAP_Create(char *, int flags, aiori_mod_opt_t *);
static void *MMAP_Open(char *, int flags, aiori_mod_opt_t *);
static IOR_offset_t MMAP_Xfer(int, void *, IOR_size_t *,
static aiori_fd_t *MMAP_Create(char *, int flags, aiori_mod_opt_t *);
static aiori_fd_t *MMAP_Open(char *, int flags, aiori_mod_opt_t *);
static IOR_offset_t MMAP_Xfer(int, aiori_fd_t *, IOR_size_t *,
IOR_offset_t, aiori_mod_opt_t *);
static void MMAP_Close(void *, aiori_mod_opt_t *);
static void MMAP_Fsync(void *, aiori_mod_opt_t *);
static void MMAP_Close(aiori_fd_t *, aiori_mod_opt_t *);
static void MMAP_Fsync(aiori_fd_t *, aiori_mod_opt_t *);
static option_help * MMAP_options(aiori_mod_opt_t ** init_backend_options, aiori_mod_opt_t * init_values);
static void MMAP_init_xfer_options(IOR_param_t * params);
static int MMAP_check_params(aiori_mod_opt_t * options);
@ -130,32 +130,32 @@ static void ior_mmap_file(int *file, int mflags, void *param)
/*
* Creat and open a file through the POSIX interface, then setup mmap.
*/
static void *MMAP_Create(char *testFileName, int flags, aiori_mod_opt_t * param)
static aiori_fd_t *MMAP_Create(char *testFileName, int flags, aiori_mod_opt_t * param)
{
int *fd;
fd = POSIX_Create(testFileName, flags, param);
fd = (int*) POSIX_Create(testFileName, flags, param);
if (ftruncate(*fd, ior_param->expectedAggFileSize) != 0)
ERR("ftruncate() failed");
ior_mmap_file(fd, flags, param);
return ((void *)fd);
return ((aiori_fd_t *)fd);
}
/*
* Open a file through the POSIX interface and setup mmap.
*/
static void *MMAP_Open(char *testFileName, int flags, aiori_mod_opt_t * param)
static aiori_fd_t *MMAP_Open(char *testFileName, int flags, aiori_mod_opt_t * param)
{
int *fd;
fd = POSIX_Open(testFileName, flags, param);
fd = (int*) POSIX_Open(testFileName, flags, param);
ior_mmap_file(fd, flags, param);
return ((void *)fd);
return ((aiori_fd_t *)fd);
}
/*
* Write or read access to file using mmap
*/
static IOR_offset_t MMAP_Xfer(int access, void *file, IOR_size_t * buffer,
static IOR_offset_t MMAP_Xfer(int access, aiori_fd_t *file, IOR_size_t * buffer,
IOR_offset_t length, aiori_mod_opt_t * param)
{
mmap_options_t *o = (mmap_options_t*) param;
@ -178,7 +178,7 @@ static IOR_offset_t MMAP_Xfer(int access, void *file, IOR_size_t * buffer,
/*
* Perform msync().
*/
static void MMAP_Fsync(void *fd, aiori_mod_opt_t * param)
static void MMAP_Fsync(aiori_fd_t *fd, aiori_mod_opt_t * param)
{
mmap_options_t *o = (mmap_options_t*) param;
if (msync(o->mmap_ptr, ior_param->expectedAggFileSize, MS_SYNC) != 0)
@ -188,7 +188,7 @@ static void MMAP_Fsync(void *fd, aiori_mod_opt_t * param)
/*
* Close a file through the POSIX interface, after tear down the mmap.
*/
static void MMAP_Close(void *fd, aiori_mod_opt_t * param)
static void MMAP_Close(aiori_fd_t *fd, aiori_mod_opt_t * param)
{
mmap_options_t *o = (mmap_options_t*) param;
if (munmap(o->mmap_ptr, ior_param->expectedAggFileSize) != 0)

View File

@ -33,13 +33,13 @@
static IOR_offset_t SeekOffset(MPI_File, IOR_offset_t, aiori_mod_opt_t *);
static void *MPIIO_Create(char *, int iorflags, aiori_mod_opt_t *);
static void *MPIIO_Open(char *, int flags, aiori_mod_opt_t *);
static IOR_offset_t MPIIO_Xfer(int, void *, IOR_size_t *,
static aiori_fd_t *MPIIO_Create(char *, int iorflags, aiori_mod_opt_t *);
static aiori_fd_t *MPIIO_Open(char *, int flags, aiori_mod_opt_t *);
static IOR_offset_t MPIIO_Xfer(int, aiori_fd_t *, IOR_size_t *,
IOR_offset_t, aiori_mod_opt_t *);
static void MPIIO_Close(void *, aiori_mod_opt_t *);
static void MPIIO_Close(aiori_fd_t *, aiori_mod_opt_t *);
static char* MPIIO_GetVersion();
static void MPIIO_Fsync(void *, aiori_mod_opt_t *);
static void MPIIO_Fsync(aiori_fd_t *, aiori_mod_opt_t *);
static void MPIIO_init_xfer_options(IOR_param_t * params);
static int MPIIO_check_params(aiori_mod_opt_t * options);
@ -172,7 +172,7 @@ int MPIIO_Access(const char *path, int mode, aiori_mod_opt_t *module_options)
/*
* Create and open a file through the MPIIO interface.
*/
static void *MPIIO_Create(char *testFileName, int iorflags, aiori_mod_opt_t * module_options)
static aiori_fd_t *MPIIO_Create(char *testFileName, int iorflags, aiori_mod_opt_t * module_options)
{
return MPIIO_Open(testFileName, iorflags, module_options);
}
@ -180,7 +180,7 @@ static void *MPIIO_Create(char *testFileName, int iorflags, aiori_mod_opt_t * mo
/*
* Open a file through the MPIIO interface. Setup file view.
*/
static void *MPIIO_Open(char *testFileName, int flags, aiori_mod_opt_t * module_options)
static aiori_fd_t *MPIIO_Open(char *testFileName, int flags, aiori_mod_opt_t * module_options)
{
mpiio_options_t * param = (mpiio_options_t*) module_options;
int fd_mode = (int)0,
@ -328,7 +328,7 @@ static void *MPIIO_Open(char *testFileName, int flags, aiori_mod_opt_t * module_
/*
* Write or read access to file using the MPIIO interface.
*/
static IOR_offset_t MPIIO_Xfer(int access, void * fdp, IOR_size_t * buffer,
static IOR_offset_t MPIIO_Xfer(int access, aiori_fd_t * fdp, IOR_size_t * buffer,
IOR_offset_t length, aiori_mod_opt_t * module_options)
{
/* NOTE: The second arg is (void *) for reads, and (const void *)
@ -464,7 +464,7 @@ static IOR_offset_t MPIIO_Xfer(int access, void * fdp, IOR_size_t * buffer,
/*
* Perform fsync().
*/
static void MPIIO_Fsync(void *fdp, aiori_mod_opt_t * module_options)
static void MPIIO_Fsync(aiori_fd_t *fdp, aiori_mod_opt_t * module_options)
{
mpiio_options_t * param = (mpiio_options_t*) module_options;
if(param->dry_run)
@ -477,7 +477,7 @@ static void MPIIO_Fsync(void *fdp, aiori_mod_opt_t * module_options)
/*
* Close a file through the MPIIO interface.
*/
static void MPIIO_Close(void *fdp, aiori_mod_opt_t * module_options)
static void MPIIO_Close(aiori_fd_t *fdp, aiori_mod_opt_t * module_options)
{
mpiio_options_t * param = (mpiio_options_t*) module_options;
mpiio_fd_t * mfd = (mpiio_fd_t*) fdp;

View File

@ -68,9 +68,9 @@
#endif
/**************************** P R O T O T Y P E S *****************************/
static IOR_offset_t POSIX_Xfer(int, void *, IOR_size_t *,
static IOR_offset_t POSIX_Xfer(int, aiori_fd_t *, IOR_size_t *,
IOR_offset_t, aiori_mod_opt_t *);
static void POSIX_Fsync(void *, aiori_mod_opt_t *);
static void POSIX_Fsync(aiori_fd_t *, aiori_mod_opt_t *);
static void POSIX_Sync(aiori_mod_opt_t * );
static int POSIX_check_params(aiori_mod_opt_t * options);
@ -372,7 +372,7 @@ bool beegfs_createFilePath(char* filepath, mode_t mode, int numTargets, int chun
/*
* Creat and open a file through the POSIX interface.
*/
void *POSIX_Create(char *testFileName, int flags, aiori_mod_opt_t * param)
aiori_fd_t *POSIX_Create(char *testFileName, int flags, aiori_mod_opt_t * param)
{
int fd_oflag = O_BINARY;
int mode = 0664;
@ -387,7 +387,7 @@ void *POSIX_Create(char *testFileName, int flags, aiori_mod_opt_t * param)
}
if(ior_param->dryRun)
return 0;
return (aiori_fd_t*) 0;
#ifdef HAVE_LUSTRE_LUSTRE_USER_H
/* Add a #define for FASYNC if not available, as it forms part of
@ -483,7 +483,7 @@ void *POSIX_Create(char *testFileName, int flags, aiori_mod_opt_t * param)
gpfs_free_all_locks(*fd);
}
#endif
return ((void *)fd);
return (aiori_fd_t*) fd;
}
/*
@ -503,7 +503,7 @@ int POSIX_Mknod(char *testFileName)
/*
* Open a file through the POSIX interface.
*/
void *POSIX_Open(char *testFileName, int flags, aiori_mod_opt_t * param)
aiori_fd_t *POSIX_Open(char *testFileName, int flags, aiori_mod_opt_t * param)
{
int fd_oflag = O_BINARY;
int *fd;
@ -519,7 +519,7 @@ void *POSIX_Open(char *testFileName, int flags, aiori_mod_opt_t * param)
fd_oflag |= O_RDWR;
if(ior_param->dryRun)
return 0;
return (aiori_fd_t*) 0;
*fd = open64(testFileName, fd_oflag);
if (*fd < 0)
@ -542,13 +542,13 @@ void *POSIX_Open(char *testFileName, int flags, aiori_mod_opt_t * param)
gpfs_free_all_locks(*fd);
}
#endif
return ((void *)fd);
return (aiori_fd_t*) fd;
}
/*
* Write or read access to file using the POSIX interface.
*/
static IOR_offset_t POSIX_Xfer(int access, void *file, IOR_size_t * buffer,
static IOR_offset_t POSIX_Xfer(int access, aiori_fd_t *file, IOR_size_t * buffer,
IOR_offset_t length, aiori_mod_opt_t * param)
{
int xferRetries = 0;
@ -587,8 +587,9 @@ static IOR_offset_t POSIX_Xfer(int access, void *file, IOR_size_t * buffer,
if (rc == -1)
ERRF("write(%d, %p, %lld) failed",
fd, (void*)ptr, remaining);
if (ior_param->fsyncPerWrite == TRUE)
POSIX_Fsync(&fd, param);
if (ior_param->fsyncPerWrite == TRUE){
POSIX_Fsync((aiori_fd_t*) &fd, param);
}
} else { /* READ or CHECK */
if (verbose >= VERBOSE_4) {
fprintf(stdout,
@ -634,7 +635,7 @@ static IOR_offset_t POSIX_Xfer(int access, void *file, IOR_size_t * buffer,
/*
* Perform fsync().
*/
static void POSIX_Fsync(void *fd, aiori_mod_opt_t * param)
static void POSIX_Fsync(aiori_fd_t *fd, aiori_mod_opt_t * param)
{
if (fsync(*(int *)fd) != 0)
EWARNF("fsync(%d) failed", *(int *)fd);
@ -653,7 +654,7 @@ static void POSIX_Sync(aiori_mod_opt_t * param)
/*
* Close a file through the POSIX interface.
*/
void POSIX_Close(void *fd, aiori_mod_opt_t * param)
void POSIX_Close(aiori_fd_t *fd, aiori_mod_opt_t * param)
{
if(ior_param->dryRun)
return;

View File

@ -72,22 +72,26 @@ typedef struct aiori_mod_opt_t{
void * dummy;
} aiori_mod_opt_t;
typedef struct aiori_fd_t{
void * dummy;
} aiori_fd_t;
typedef struct ior_aiori {
char *name;
char *name_legacy;
void *(*create)(char *, int iorflags, aiori_mod_opt_t *);
aiori_fd_t *(*create)(char *, int iorflags, aiori_mod_opt_t *);
int (*mknod)(char *);
void *(*open)(char *, int iorflags, aiori_mod_opt_t *);
aiori_fd_t *(*open)(char *, int iorflags, aiori_mod_opt_t *);
/*
Allow to set generic transfer options that shall be applied to any subsequent IO call.
*/
void (*init_xfer_options)(IOR_param_t * params);
IOR_offset_t (*xfer)(int, void *, IOR_size_t *,
IOR_offset_t (*xfer)(int, aiori_fd_t *, IOR_size_t *,
IOR_offset_t, aiori_mod_opt_t *);
void (*close)(void *, aiori_mod_opt_t *);
void (*close)(aiori_fd_t *, aiori_mod_opt_t *);
void (*delete)(char *, aiori_mod_opt_t *);
char* (*get_version)(void);
void (*fsync)(void *, aiori_mod_opt_t *);
void (*fsync)(aiori_fd_t *, aiori_mod_opt_t *);
IOR_offset_t (*get_file_size)(aiori_mod_opt_t * module_options, MPI_Comm, char *);
int (*statfs) (const char *, ior_aiori_statfs_t *, aiori_mod_opt_t * module_options);
int (*mkdir) (const char *path, mode_t mode, aiori_mod_opt_t * module_options);
@ -142,12 +146,12 @@ int aiori_posix_access (const char *path, int mode, aiori_mod_opt_t * module_opt
int aiori_posix_stat (const char *path, struct stat *buf, aiori_mod_opt_t * module_options);
void aiori_posix_init_xfer_options(IOR_param_t * params);
void *POSIX_Create(char *testFileName, int flags, aiori_mod_opt_t * module_options);
aiori_fd_t *POSIX_Create(char *testFileName, int flags, aiori_mod_opt_t * module_options);
int POSIX_Mknod(char *testFileName);
void *POSIX_Open(char *testFileName, int flags, aiori_mod_opt_t * module_options);
aiori_fd_t *POSIX_Open(char *testFileName, int flags, aiori_mod_opt_t * module_options);
IOR_offset_t POSIX_GetFileSize(aiori_mod_opt_t * test, MPI_Comm testComm, char *testFileName);
void POSIX_Delete(char *testFileName, aiori_mod_opt_t * module_options);
void POSIX_Close(void *fd, aiori_mod_opt_t * module_options);
void POSIX_Close(aiori_fd_t *fd, aiori_mod_opt_t * module_options);
option_help * POSIX_options(aiori_mod_opt_t ** init_backend_options, aiori_mod_opt_t * init_values);

View File

@ -55,7 +55,7 @@ static void InitTests(IOR_test_t * , MPI_Comm);
static void TestIoSys(IOR_test_t *);
static void ValidateTests(IOR_param_t *);
static IOR_offset_t WriteOrRead(IOR_param_t *test, IOR_results_t *results,
void *fd, const int access,
aiori_fd_t *fd, const int access,
IOR_io_buffers *ioBuffers);
static void test_initialize(IOR_test_t * test){
@ -1231,7 +1231,7 @@ static void TestIoSys(IOR_test_t *test)
double startTime;
int pretendRank;
int rep;
void *fd;
aiori_fd_t *fd;
MPI_Group orig_group, new_group;
int range[3];
IOR_offset_t dataMoved; /* for data rate calculation */
@ -1781,7 +1781,7 @@ IOR_offset_t *GetOffsetArrayRandom(IOR_param_t * test, int pretendRank, int acce
}
static IOR_offset_t WriteOrReadSingle(IOR_offset_t pairCnt, IOR_offset_t *offsetArray, int pretendRank,
IOR_offset_t * transferCount, int * errors, IOR_param_t * test, int * fd, IOR_io_buffers* ioBuffers, int access){
IOR_offset_t * transferCount, int * errors, IOR_param_t * test, aiori_fd_t * fd, IOR_io_buffers* ioBuffers, int access){
IOR_offset_t amtXferred = 0;
IOR_offset_t transfer;
@ -1850,7 +1850,7 @@ static IOR_offset_t WriteOrReadSingle(IOR_offset_t pairCnt, IOR_offset_t *offset
* out the data to each block in transfer sizes, until the remainder left is 0.
*/
static IOR_offset_t WriteOrRead(IOR_param_t *test, IOR_results_t *results,
void *fd, const int access, IOR_io_buffers *ioBuffers)
aiori_fd_t *fd, const int access, IOR_io_buffers *ioBuffers)
{
int errors = 0;
IOR_offset_t transferCount = 0;

View File

@ -346,7 +346,7 @@ static void remove_file (const char *path, uint64_t itemNum) {
static void create_file (const char *path, uint64_t itemNum) {
char curr_item[MAX_PATHLEN];
void *aiori_fh = NULL;
aiori_fd_t *aiori_fh = NULL;
if ( (itemNum % ITEM_COUNT==0 && (itemNum != 0))) {
VERBOSE(3,5,"create file: "LLU"", itemNum);
@ -443,7 +443,7 @@ void collective_helper(const int dirs, const int create, const char* path, uint6
VERBOSE(3,5,"create file: %s", curr_item);
if (create) {
void *aiori_fh;
aiori_fd_t *aiori_fh;
//create files
aiori_fh = backend->create (curr_item, IOR_WRONLY | IOR_CREAT, backend_options);
@ -622,7 +622,7 @@ void mdtest_stat(const int random, const int dirs, const long dir_iter, const ch
void mdtest_read(int random, int dirs, const long dir_iter, char *path) {
uint64_t parent_dir, item_num = 0;
char item[MAX_PATHLEN], temp[MAX_PATHLEN];
void *aiori_fh;
aiori_fd_t *aiori_fh;
VERBOSE(1,-1,"Entering mdtest_read on %s", path );