From 0666875df3c265137c9d4a7492cdb3e6d7574b34 Mon Sep 17 00:00:00 2001 From: Jean-Yves VET Date: Tue, 17 Dec 2019 14:45:24 +0100 Subject: [PATCH] aiori-IME: Add support of sync and mknod in IME backend This patch adds the support of sync (flush client page cache for all opened files) and mknod in the IME backend. --- src/aiori-IME.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/aiori-IME.c b/src/aiori-IME.c index b6cef34..500f380 100755 --- a/src/aiori-IME.c +++ b/src/aiori-IME.c @@ -51,6 +51,12 @@ static int IME_StatFS(const char *, ior_aiori_statfs_t *, static int IME_RmDir(const char *, IOR_param_t *); static int IME_MkDir(const char *, mode_t, IOR_param_t *); static int IME_Stat(const char *, struct stat *, IOR_param_t *); + +#if (IME_NATIVE_API_VERSION >= 132) +static int IME_Mknod(char *); +static void IME_Sync(IOR_param_t *); +#endif + static void IME_Initialize(); static void IME_Finalize(); @@ -107,6 +113,10 @@ ior_aiori_t ime_aiori = { .initialize = IME_Initialize, .finalize = IME_Finalize, .get_options = IME_options, +#if (IME_NATIVE_API_VERSION >= 132) + .sync = IME_Sync, + .mknod = IME_Mknod, +#endif .enable_mdtest = true, }; @@ -406,3 +416,27 @@ static IOR_offset_t IME_GetFileSize(IOR_param_t *test, MPI_Comm testComm, return(aggFileSizeFromStat); } + +#if (IME_NATIVE_API_VERSION >= 132) +/* + * Create a file through mknod interface. + */ +static int IME_Mknod(char *testFileName) +{ + int ret = ime_native_mknod(testFileName, S_IFREG | S_IRUSR, 0); + if (ret < 0) + ERR("mknod failed"); + + return ret; +} + +/* + * Use IME sync to flush page cache of all opened files. + */ +static void IME_Sync(IOR_param_t * param) +{ + int ret = ime_native_sync(0); + if (ret != 0) + FAIL("Error executing the sync command."); +} +#endif