Support old legacy name in backends
Context: Some backends may have used different names in the past (like IME backend use to be IM). Legacy scripts may break. This patch adds a legacy name option in the aiori structure. Both name and legacy name work to select the interface. But the following warning is printed if the legacy name is used: ior WARNING: [legacy name] backend is deprecated use [name] instead.master
parent
e5c8a11769
commit
f472162784
|
@ -136,6 +136,7 @@ static int DUMMY_stat (const char *path, struct stat *buf, IOR_param_t * param){
|
||||||
|
|
||||||
ior_aiori_t dummy_aiori = {
|
ior_aiori_t dummy_aiori = {
|
||||||
"DUMMY",
|
"DUMMY",
|
||||||
|
NULL,
|
||||||
DUMMY_Create,
|
DUMMY_Create,
|
||||||
DUMMY_Open,
|
DUMMY_Open,
|
||||||
DUMMY_Xfer,
|
DUMMY_Xfer,
|
||||||
|
|
|
@ -98,6 +98,7 @@ static int HDF5_Access(const char *, int, IOR_param_t *);
|
||||||
|
|
||||||
ior_aiori_t hdf5_aiori = {
|
ior_aiori_t hdf5_aiori = {
|
||||||
.name = "HDF5",
|
.name = "HDF5",
|
||||||
|
.name_legacy = NULL,
|
||||||
.create = HDF5_Create,
|
.create = HDF5_Create,
|
||||||
.open = HDF5_Open,
|
.open = HDF5_Open,
|
||||||
.xfer = HDF5_Xfer,
|
.xfer = HDF5_Xfer,
|
||||||
|
|
|
@ -115,6 +115,7 @@ static IOR_offset_t HDFS_GetFileSize(IOR_param_t *, MPI_Comm, char *);
|
||||||
|
|
||||||
ior_aiori_t hdfs_aiori = {
|
ior_aiori_t hdfs_aiori = {
|
||||||
.name = "HDFS",
|
.name = "HDFS",
|
||||||
|
.name_legacy = NULL,
|
||||||
.create = HDFS_Create,
|
.create = HDFS_Create,
|
||||||
.open = HDFS_Open,
|
.open = HDFS_Open,
|
||||||
.xfer = HDFS_Xfer,
|
.xfer = HDFS_Xfer,
|
||||||
|
|
|
@ -63,6 +63,7 @@ extern MPI_Comm testComm;
|
||||||
|
|
||||||
ior_aiori_t ime_aiori = {
|
ior_aiori_t ime_aiori = {
|
||||||
.name = "IME",
|
.name = "IME",
|
||||||
|
.name_legacy = "IM",
|
||||||
.create = IME_Create,
|
.create = IME_Create,
|
||||||
.open = IME_Open,
|
.open = IME_Open,
|
||||||
.xfer = IME_Xfer,
|
.xfer = IME_Xfer,
|
||||||
|
|
|
@ -46,6 +46,7 @@ static void MPIIO_Fsync(void *, IOR_param_t *);
|
||||||
|
|
||||||
ior_aiori_t mpiio_aiori = {
|
ior_aiori_t mpiio_aiori = {
|
||||||
.name = "MPIIO",
|
.name = "MPIIO",
|
||||||
|
.name_legacy = NULL,
|
||||||
.create = MPIIO_Create,
|
.create = MPIIO_Create,
|
||||||
.open = MPIIO_Open,
|
.open = MPIIO_Open,
|
||||||
.xfer = MPIIO_Xfer,
|
.xfer = MPIIO_Xfer,
|
||||||
|
|
|
@ -62,6 +62,7 @@ static int NCMPI_Access(const char *, int, IOR_param_t *);
|
||||||
|
|
||||||
ior_aiori_t ncmpi_aiori = {
|
ior_aiori_t ncmpi_aiori = {
|
||||||
.name = "NCMPI",
|
.name = "NCMPI",
|
||||||
|
.name_legacy = NULL,
|
||||||
.create = NCMPI_Create,
|
.create = NCMPI_Create,
|
||||||
.open = NCMPI_Open,
|
.open = NCMPI_Open,
|
||||||
.xfer = NCMPI_Xfer,
|
.xfer = NCMPI_Xfer,
|
||||||
|
|
|
@ -77,6 +77,7 @@ static void POSIX_Fsync(void *, IOR_param_t *);
|
||||||
|
|
||||||
ior_aiori_t posix_aiori = {
|
ior_aiori_t posix_aiori = {
|
||||||
.name = "POSIX",
|
.name = "POSIX",
|
||||||
|
.name_legacy = NULL,
|
||||||
.create = POSIX_Create,
|
.create = POSIX_Create,
|
||||||
.open = POSIX_Open,
|
.open = POSIX_Open,
|
||||||
.xfer = POSIX_Xfer,
|
.xfer = POSIX_Xfer,
|
||||||
|
|
|
@ -67,6 +67,7 @@ static option_help * RADOS_options();
|
||||||
/************************** D E C L A R A T I O N S ***************************/
|
/************************** D E C L A R A T I O N S ***************************/
|
||||||
ior_aiori_t rados_aiori = {
|
ior_aiori_t rados_aiori = {
|
||||||
.name = "RADOS",
|
.name = "RADOS",
|
||||||
|
.name_legacy = NULL,
|
||||||
.create = RADOS_Create,
|
.create = RADOS_Create,
|
||||||
.open = RADOS_Open,
|
.open = RADOS_Open,
|
||||||
.xfer = RADOS_Xfer,
|
.xfer = RADOS_Xfer,
|
||||||
|
|
|
@ -167,6 +167,7 @@ static void S3_finalize();
|
||||||
// N:N fails if "transfer-size" != "block-size" (because that requires "append")
|
// N:N fails if "transfer-size" != "block-size" (because that requires "append")
|
||||||
ior_aiori_t s3_aiori = {
|
ior_aiori_t s3_aiori = {
|
||||||
.name = "S3",
|
.name = "S3",
|
||||||
|
.name_legacy = NULL,
|
||||||
.create = S3_Create,
|
.create = S3_Create,
|
||||||
.open = S3_Open,
|
.open = S3_Open,
|
||||||
.xfer = S3_Xfer,
|
.xfer = S3_Xfer,
|
||||||
|
|
20
src/aiori.c
20
src/aiori.c
|
@ -63,13 +63,15 @@ ior_aiori_t *available_aiori[] = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
void aiori_supported_apis(char * APIs){
|
void aiori_supported_apis(char * APIs, char * APIs_legacy){
|
||||||
ior_aiori_t **tmp = available_aiori;
|
ior_aiori_t **tmp = available_aiori;
|
||||||
if(*tmp != NULL){
|
if(*tmp != NULL){
|
||||||
APIs += sprintf(APIs, "%s", (*tmp)->name);
|
APIs += sprintf(APIs, "%s", (*tmp)->name);
|
||||||
tmp++;
|
tmp++;
|
||||||
for (; *tmp != NULL; ++tmp) {
|
for (; *tmp != NULL; ++tmp) {
|
||||||
APIs += sprintf(APIs, "|%s", (*tmp)->name);
|
APIs += sprintf(APIs, "|%s", (*tmp)->name);
|
||||||
|
if ((*tmp)->name_legacy != NULL)
|
||||||
|
APIs_legacy += sprintf(APIs_legacy, "|%s", (*tmp)->name_legacy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -223,7 +225,19 @@ const ior_aiori_t *aiori_select (const char *api)
|
||||||
{
|
{
|
||||||
char warn_str[256] = {0};
|
char warn_str[256] = {0};
|
||||||
for (ior_aiori_t **tmp = available_aiori ; *tmp != NULL; ++tmp) {
|
for (ior_aiori_t **tmp = available_aiori ; *tmp != NULL; ++tmp) {
|
||||||
if (NULL == api || strcasecmp(api, (*tmp)->name) == 0) {
|
char *name_leg = (*tmp)->name_legacy;
|
||||||
|
if (NULL != api &&
|
||||||
|
(strcasecmp(api, (*tmp)->name) != 0) &&
|
||||||
|
(name_leg == NULL || strcasecmp(api, name_leg) != 0))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (name_leg != NULL && strcasecmp(api, name_leg) == 0)
|
||||||
|
{
|
||||||
|
snprintf(warn_str, 256, "%s backend is deprecated use %s"
|
||||||
|
" instead", api, (*tmp)->name);
|
||||||
|
WARN(warn_str);
|
||||||
|
}
|
||||||
|
|
||||||
if (NULL == (*tmp)->statfs) {
|
if (NULL == (*tmp)->statfs) {
|
||||||
(*tmp)->statfs = aiori_posix_statfs;
|
(*tmp)->statfs = aiori_posix_statfs;
|
||||||
snprintf(warn_str, 256, "assuming POSIX-based backend for"
|
snprintf(warn_str, 256, "assuming POSIX-based backend for"
|
||||||
|
@ -254,9 +268,9 @@ const ior_aiori_t *aiori_select (const char *api)
|
||||||
" %s stat call", api);
|
" %s stat call", api);
|
||||||
WARN(warn_str);
|
WARN(warn_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
return *tmp;
|
return *tmp;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,6 +65,7 @@ typedef struct ior_aiori_statfs {
|
||||||
|
|
||||||
typedef struct ior_aiori {
|
typedef struct ior_aiori {
|
||||||
char *name;
|
char *name;
|
||||||
|
char *name_legacy;
|
||||||
void *(*create)(char *, IOR_param_t *);
|
void *(*create)(char *, IOR_param_t *);
|
||||||
void *(*open)(char *, IOR_param_t *);
|
void *(*open)(char *, IOR_param_t *);
|
||||||
IOR_offset_t (*xfer)(int, void *, IOR_size_t *,
|
IOR_offset_t (*xfer)(int, void *, IOR_size_t *,
|
||||||
|
@ -101,7 +102,7 @@ void aiori_initialize(IOR_test_t * tests);
|
||||||
void aiori_finalize(IOR_test_t * tests);
|
void aiori_finalize(IOR_test_t * tests);
|
||||||
const ior_aiori_t *aiori_select (const char *api);
|
const ior_aiori_t *aiori_select (const char *api);
|
||||||
int aiori_count (void);
|
int aiori_count (void);
|
||||||
void aiori_supported_apis(char * APIs);
|
void aiori_supported_apis(char * APIs, char * APIs_legacy);
|
||||||
const char *aiori_default (void);
|
const char *aiori_default (void);
|
||||||
|
|
||||||
/* some generic POSIX-based backend calls */
|
/* some generic POSIX-based backend calls */
|
||||||
|
|
|
@ -1303,7 +1303,8 @@ void print_help (void) {
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
char APIs[1024];
|
char APIs[1024];
|
||||||
aiori_supported_apis(APIs);
|
char APIs_legacy[1024];
|
||||||
|
aiori_supported_apis(APIs, APIs_legacy);
|
||||||
char apiStr[1024];
|
char apiStr[1024];
|
||||||
sprintf(apiStr, "API for I/O [%s]", APIs);
|
sprintf(apiStr, "API for I/O [%s]", APIs);
|
||||||
|
|
||||||
|
@ -2170,7 +2171,8 @@ mdtest_results_t * mdtest_run(int argc, char **argv, MPI_Comm world_com, FILE *
|
||||||
char * path = "./out";
|
char * path = "./out";
|
||||||
int randomize = 0;
|
int randomize = 0;
|
||||||
char APIs[1024];
|
char APIs[1024];
|
||||||
aiori_supported_apis(APIs);
|
char APIs_legacy[1024];
|
||||||
|
aiori_supported_apis(APIs, APIs_legacy);
|
||||||
char apiStr[1024];
|
char apiStr[1024];
|
||||||
sprintf(apiStr, "API for I/O [%s]", APIs);
|
sprintf(apiStr, "API for I/O [%s]", APIs);
|
||||||
|
|
||||||
|
|
|
@ -441,7 +441,8 @@ IOR_test_t *ParseCommandLine(int argc, char **argv)
|
||||||
parameters = & initialTestParams;
|
parameters = & initialTestParams;
|
||||||
|
|
||||||
char APIs[1024];
|
char APIs[1024];
|
||||||
aiori_supported_apis(APIs);
|
char APIs_legacy[1024];
|
||||||
|
aiori_supported_apis(APIs, APIs_legacy);
|
||||||
char apiStr[1024];
|
char apiStr[1024];
|
||||||
sprintf(apiStr, "API for I/O [%s]", APIs);
|
sprintf(apiStr, "API for I/O [%s]", APIs);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue