[mpich] MPICH primary repository branch, master, updated. v3.1-50-gc8a19a9
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "MPICH primary repository". The branch, master has been updated via c8a19a9fde0626b12329f6865c8f2e9c557a66fd (commit) from 486cac7655f0edbfc65958e1f5b7e4b065b88b5f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.mpich.org/mpich.git/commitdiff/c8a19a9fde0626b12329f6865c8f2e9c55... commit c8a19a9fde0626b12329f6865c8f2e9c557a66fd Author: Rob Latham <[email protected]> Date: Mon Mar 17 15:08:14 2014 -0500 some lustre parameters larger than signed int Discussion with Michael Raymond: a customer would "like to use larger than 32-bit stripe units". Technically, lustre only supports a 32 bit value for its stripe units -- an *unsigned* 32 bit value. Since we're here, let's double check that we do not try to jam a larger value into the lustre hint structure than lustre can support. Signed-off-by: Michael Raymond <[email protected]> diff --git a/src/mpi/romio/adio/ad_lustre/ad_lustre_hints.c b/src/mpi/romio/adio/ad_lustre/ad_lustre_hints.c index 7b70ba3..a6e87e8 100644 --- a/src/mpi/romio/adio/ad_lustre/ad_lustre_hints.c +++ b/src/mpi/romio/adio/ad_lustre/ad_lustre_hints.c @@ -15,7 +15,8 @@ void ADIOI_LUSTRE_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code) { char *value; - int flag, stripe_val[3], str_factor = -1, str_unit=0, start_iodev=-1; + int flag; + ADIO_Offset stripe_val[3], str_factor = -1, str_unit=0, start_iodev=-1; struct lov_user_md lum = { 0 }; int err, myrank, fd_sys, perm, amode, old_mask; static char myname[] = "ADIOI_LUSTRE_SETINFO"; @@ -44,17 +45,17 @@ void ADIOI_LUSTRE_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code) ADIOI_Info_get(users_info, "striping_unit", MPI_MAX_INFO_VAL, value, &flag); if (flag) - str_unit=atoi(value); + str_unit=atoll(value); ADIOI_Info_get(users_info, "striping_factor", MPI_MAX_INFO_VAL, value, &flag); if (flag) - str_factor=atoi(value); + str_factor=atoll(value); ADIOI_Info_get(users_info, "romio_lustre_start_iodevice", MPI_MAX_INFO_VAL, value, &flag); if (flag) - start_iodev=atoi(value); + start_iodev=atoll(value); /* direct read and write */ ADIOI_Info_get(users_info, "direct_read", MPI_MAX_INFO_VAL, @@ -78,7 +79,7 @@ void ADIOI_LUSTRE_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code) stripe_val[1] = str_unit; stripe_val[2] = start_iodev; } - MPI_Bcast(stripe_val, 3, MPI_INT, 0, fd->comm); + MPI_Bcast(stripe_val, 3, MPI_OFFSET, 0, fd->comm); if (stripe_val[0] != str_factor || stripe_val[1] != str_unit @@ -121,8 +122,20 @@ void ADIOI_LUSTRE_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code) lum.lmm_magic = LOV_USER_MAGIC; lum.lmm_pattern = 0; lum.lmm_stripe_size = str_unit; + /* crude check for overflow of lustre internal datatypes. + * Silently cap to large value if user provides a value + * larger than lustre supports */ + if (lum.lmm_stripe_size != str_unit) { + lum.lmm_stripe_size = UINT_MAX; + } lum.lmm_stripe_count = str_factor; + if ( lum.lmm_stripe_count != str_factor) { + lum.lmm_stripe_count = USHRT_MAX; + } lum.lmm_stripe_offset = start_iodev; + if (lum.lmm_stripe_offset != start_iodev) { + lum.lmm_stripe_offset = USHRT_MAX; + } err = ioctl(fd_sys, LL_IOC_LOV_SETSTRIPE, &lum); if (err == -1 && errno != EEXIST) { ----------------------------------------------------------------------- Summary of changes: src/mpi/romio/adio/ad_lustre/ad_lustre_hints.c | 23 ++++++++++++++++++----- 1 files changed, 18 insertions(+), 5 deletions(-) hooks/post-receive -- MPICH primary repository
participants (1)
-
noreply@mpich.org