Select Git revision
dbaccess.cnf
-
Carsten Karbach authoredCarsten Karbach authored
psmpi-5.5.0-1_ime.patch 8.94 KiB
diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.c psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.c
--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.c 2021-10-21 20:06:57.000000000 +0200
+++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.c 2021-11-09 14:53:59.545886977 +0100
@@ -10,8 +10,8 @@
struct ADIOI_Fns_struct ADIO_IME_operations = {
ADIOI_IME_Open, /* Open */
- ADIOI_SCALEABLE_OpenColl, /* OpenColl */ /*XXX*/
- ADIOI_IME_ReadContig, /* ReadContig */
+ ADIOI_GEN_OpenColl, /* OpenColl */
+ ADIOI_IME_ReadContig, /* ReadContig */
ADIOI_IME_WriteContig, /* WriteContig */
ADIOI_GEN_ReadStridedColl, /* ReadStridedColl */
ADIOI_GEN_WriteStridedColl, /* WriteStridedColl */
diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.c psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.c
--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.c 2021-10-21 20:06:57.000000000 +0200
+++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.c 2021-11-09 14:53:59.545886977 +0100
@@ -58,24 +58,38 @@
MPI_Attr_put(MPI_COMM_SELF, ADIOI_IME_Initialized, (void *) 0);
}
-/* Return an IME-compatible filename (add 'ime:' prefix).
- * New filename must be free'd by the user */
-char *ADIOI_IME_Add_prefix(const char *filename)
+/**
+ * Return an IME-compatible filename
+ * An absolute BFS path will get added the 'ime:' prefix.
+ * A path on ime-fuse will be converted to a relative ime path,
+ * with the ime:/ prefix
+ * The returned filename must be free'd by the user
+ */
+char *ADIOI_IME_Convert_filename(const char *filename)
{
- static char myname[] = "ADIOI_IME_ADD_PREFIX";
- size_t f_len = strlen(filename) + 1;
- char *ime_filename = ADIOI_Malloc(f_len + ADIOI_IME_PREFIX_LEN);
+ static char myname[] = "ADIOI_IME_CONVERT_FILENAME";
- if (!ime_filename) {
+#if (IME_NATIVE_API_VERSION >= 131)
+ bool is_fuse = ime_native_is_fuse_path_and_convert(filename, NULL);
+ if (is_fuse) {
+ return ADIOI_Strdup(filename);
+ }
+#endif
+ size_t f_len = strlen(filename) + 1;
+ char *ime_filename = ADIOI_Malloc(f_len + IME_FILE_PREFIX_LEN_NO_FWD_SLASH);
+ if (!ime_filename) {
MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_FATAL,
- myname, __LINE__, MPI_ERR_UNKNOWN, "Error allocating memory", 0);
+ myname, __LINE__, MPI_ERR_UNKNOWN,
+ "Error allocating memory", 0);
return NULL;
}
- ADIOI_Strncpy(ime_filename, ADIOI_IME_PREFIX, ADIOI_IME_PREFIX_LEN);
- ADIOI_Strncpy((ime_filename + ADIOI_IME_PREFIX_LEN), filename, f_len);
+ ADIOI_Strncpy(ime_filename, DEFAULT_IME_PREFIX_NO_FWD_SLASH,
+ IME_FILE_PREFIX_LEN_NO_FWD_SLASH);
+ ADIOI_Strncpy((ime_filename + IME_FILE_PREFIX_LEN_NO_FWD_SLASH),
+ filename, f_len);
return ime_filename;
}
diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.h psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.h
--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.h 2021-10-21 20:06:57.000000000 +0200
+++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.h 2021-11-09 14:53:59.545886977 +0100
@@ -17,5 +17,5 @@
void ADIOI_IME_End(int *error_code);
int ADIOI_IME_End_call(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state);
-char *ADIOI_IME_Add_prefix(const char *filename);
+char *ADIOI_IME_Convert_filename(const char *filename);
#endif /* AD_IME_COMMON_H_INCLUDED */
diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_delete.c psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_delete.c
--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_delete.c 2021-10-21 20:06:57.000000000 +0200
+++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_delete.c 2021-11-09 14:53:59.545886977 +0100
@@ -13,7 +13,7 @@
int ret;
static char myname[] = "ADIOI_IME_DELETE";
- char *ime_filename = ADIOI_IME_Add_prefix(filename);
+ char *ime_filename = ADIOI_IME_Convert_filename(filename);
ret = ime_native_unlink(ime_filename);
ADIOI_Free(ime_filename);
if (ret)
diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.h psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.h
--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.h 2021-10-21 20:06:57.000000000 +0200
+++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.h 2021-11-09 14:53:59.545886977 +0100
@@ -7,9 +7,7 @@
#define AD_IME_H_INCLUDED
#include "adio.h"
-#ifdef HAVE_IME_NATIVE_H
#include "ime_native.h"
-#endif
#define ADIOI_IME_PREFIX "ime:"
#define ADIOI_IME_PREFIX_LEN (sizeof(ADIOI_IME_PREFIX) - 1)
diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_open.c psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_open.c
--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_open.c 2021-10-21 20:06:57.000000000 +0200
+++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_open.c 2021-11-09 14:53:59.545886977 +0100
@@ -68,7 +68,7 @@
return;
}
- ime_fs->ime_filename = ADIOI_IME_Add_prefix(fd->filename);
+ ime_fs->ime_filename = ADIOI_IME_Convert_filename(fd->filename);
/* all processes open the file */
ret = ime_native_open(ime_fs->ime_filename, amode, perm);
diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/common/ad_fstype.c psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/common/ad_fstype.c
--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/common/ad_fstype.c 2021-10-21 20:06:57.000000000 +0200
+++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/common/ad_fstype.c 2021-11-09 14:53:59.545886977 +0100
@@ -97,6 +97,20 @@
#define DAOS_SUPER_MAGIC (0xDA05AD10)
#endif
+# if defined(ROMIO_IME)
+/* fuse super magic is somehow missing in system includes */
+# if !defined(FUSE_SUPER_MAGIC)
+# define FUSE_SUPER_MAGIC 0x65735546
+# endif
+# include "ime_native.h"
+# if (IME_NATIVE_API_VERSION) >= 131
+# include "ime_ioctl.h"
+
+/* Disable auto-switching from posix to IME */
+#define IME_NO_AUTO_NATIVE "IME_NO_AUTO_NATIVE"
+# endif
+# endif /* ROMIO_IME */
+
#ifdef ROMIO_HAVE_STRUCT_STATVFS_WITH_F_BASETYPE
#ifdef HAVE_SYS_STATVFS_H
#include <sys/statvfs.h>
@@ -486,6 +500,39 @@
}
#endif
+#ifdef FUSE_SUPER_MAGIC
+ if (fsbuf.f_type == FUSE_SUPER_MAGIC) {
+ /* fuse does not allow to override FUSE_SUPER_MAGIC
+ * Any file system that is fused based needs to hook in
+ * here and use its own ioctl.
+ */
+ #if defined ROMIO_IME && defined IM_FIOC_GET_F_TYPE
+ char *dir;
+ ADIO_FileSysType_parentdir(filename, &dir);
+ int fd = open(dir, O_RDONLY);
+ if (fd == -1)
+ {
+ /* dir should typically work, but try to fail back to
+ * filename if it somehow failed
+ */
+ fd = open(filename, O_RDONLY);
+ }
+
+ if (fd >= 0) {
+ uint32_t f_type;
+ int rc = ioctl(fd, IM_FIOC_GET_F_TYPE, &f_type);
+ close(fd);
+ if (rc == 0 && f_type == IME_SUPER_MAGIC &&
+ getenv(IME_NO_AUTO_NATIVE) == NULL) {
+ *fstype = ADIO_IME;
+ return;
+ }
+ }
+ #endif /* ROMIO_IME */
+ }
+#endif /* FUSE_SUPER_MAGIC */
+
+
#endif /*ROMIO_HAVE_STRUCT_STATFS_WITH_F_TYPE */
#ifdef ROMIO_UFS
diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/configure.ac psmpi-5.5.0-1/mpich2/src/mpi/romio/configure.ac
--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/configure.ac 2021-10-21 20:06:57.000000000 +0200
+++ psmpi-5.5.0-1/mpich2/src/mpi/romio/configure.ac 2021-11-09 14:54:27.824926093 +0100
@@ -231,6 +231,8 @@
--with-pvfs2=path - Path to installation of PVFS (version 2)],,)
AC_ARG_WITH(mpi-impl,[
--with-mpi-impl=name - Specify MPI implementation to build ROMIO for],,)
+AC_ARG_WITH(ime,[
+--with-ime=PATH - Path to installation of IME],,)
dnl
AC_ARG_WITH(mpi, [
--with-mpi=path - Path to instalation of MPI (headers, libs, etc)],,)
@@ -806,6 +808,30 @@
fi
fi
+#
+# IME specific build path.
+# Automatically adds IME to the file systems if not present
+#
+if test -n "${with_ime}" ; then
+ AC_SUBST(IME_INSTALL_PATH, ["${with_ime}"])
+fi
+
+ime_default_path="/opt/ddn/ime"
+if test -n "${with_ime}" -o -e "${ime_default_path}/include/ime_native.h"; then
+ # Use IME and the default path, if not specified or overriden
+ with_ime="${ime_default_path}"
+ file_system_ime=1
+fi
+
+if test -n "${file_system_ime}" ; then
+ CFLAGS="$CFLAGS -I${with_ime}/include"
+ CPPFLAGS="$CPPFLAGS -I${with_ime}/include"
+ LDFLAGS="$LDFLAGS -L${with_ime}/lib"
+ LIBS="-lim_client -lim_common"
+ export LD_LIBRARY_PATH="${with_ime}/lib:$LD_LIBRARY_PATH"
+fi
+
+
#############################################
# This PVFS2 logic is special because it's hard to get it right if it comes
# before the known_filesystems check loop above. So we handle it down here,