Prepare for v1.2.3lanl1 release: v1.2lanl
authorbrbarret
Thu Aug 16 03:20:40 2007 +0000 (2007-08-16)
branchv1.2lanl
changeset 173807e9417408cab
parent 17379 a653ed6345f1
Prepare for v1.2.3lanl1 release:
- merge r15371 from v1.2 branch
- merge r15867 from v1.2 branch
- merge r15862 from trunk
- update NEWS
NEWS
VERSION
ompi/mca/io/romio/src/io_romio_component.c
orte/mca/pls/tm/pls_tm_module.c
orte/tools/orted/orted.c
     1.1 --- a/NEWS	Thu Aug 16 02:53:17 2007 +0000
     1.2 +++ b/NEWS	Thu Aug 16 03:20:40 2007 +0000
     1.3 @@ -26,6 +26,13 @@
     1.4  bug fixes (and other actions) for each version of Open MPI since
     1.5  version 1.0.
     1.6  
     1.7 +1.2.3lanl1
     1.8 +----------
     1.9 +
    1.10 +- Fixed an issue with umask not being propagated when using the TM launcher.
    1.11 +- Fixed a ROMIO problem where non-blocking I/O errors were not properly
    1.12 +  reported to the user.
    1.13 +
    1.14  1.2.3
    1.15  -----
    1.16  
     2.1 --- a/VERSION	Thu Aug 16 02:53:17 2007 +0000
     2.2 +++ b/VERSION	Thu Aug 16 03:20:40 2007 +0000
     2.3 @@ -17,7 +17,7 @@
     2.4  # only requirement is that it must be entirely printable ASCII 
     2.5  # characters and have no white space.
     2.6  
     2.7 -greek=rc2
     2.8 +greek=lanl1
     2.9  
    2.10  # If want_svn=1, then the SVN r number will be included in the overall
    2.11  # Open MPI version number in some form.
     3.1 --- a/ompi/mca/io/romio/src/io_romio_component.c	Thu Aug 16 02:53:17 2007 +0000
     3.2 +++ b/ompi/mca/io/romio/src/io_romio_component.c	Thu Aug 16 03:20:40 2007 +0000
     3.3 @@ -279,10 +279,8 @@
     3.4          romio_rq = ((mca_io_romio_request_t *) item)->romio_rq;
     3.5          ret = ROMIO_PREFIX(MPIO_Test)(&romio_rq, &flag, 
     3.6                                        &(((ompi_request_t *) item)->req_status));
     3.7 -        if (ret < 0) {
     3.8 -            OPAL_THREAD_UNLOCK (&mca_io_romio_mutex);
     3.9 -            return ret;
    3.10 -        } else if (1 == flag) {
    3.11 +        if ((0 != ret) || (0 != flag)) {
    3.12 +            ioreq->super.req_status.MPI_ERROR = ret;
    3.13              ++count;
    3.14              /* we're done, so remove us from the pending list */
    3.15              opal_list_remove_item(&mca_io_romio_pending_requests, item);
    3.16 @@ -297,7 +295,7 @@
    3.17                  ret = ompi_request_free((ompi_request_t**) &ioreq);
    3.18                  if (OMPI_SUCCESS != ret) {
    3.19                      OPAL_THREAD_UNLOCK(&mca_io_romio_mutex);
    3.20 -                    return ret;
    3.21 +                    return count;
    3.22                  }
    3.23              }
    3.24          }
     4.1 --- a/orte/mca/pls/tm/pls_tm_module.c	Thu Aug 16 02:53:17 2007 +0000
     4.2 +++ b/orte/mca/pls/tm/pls_tm_module.c	Thu Aug 16 03:20:40 2007 +0000
     4.3 @@ -35,6 +35,9 @@
     4.4  #ifdef HAVE_SYS_TYPES_H
     4.5  #include <sys/types.h>
     4.6  #endif
     4.7 +#ifdef HAVE_SYS_STAT_H
     4.8 +#include <sys/stat.h>
     4.9 +#endif
    4.10  #ifdef HAVE_SYS_WAIT_H
    4.11  #include <sys/wait.h>
    4.12  #endif
    4.13 @@ -140,6 +143,7 @@
    4.14      struct timeval jobstart, jobstop;
    4.15      int maxtime=0, mintime=99999999, maxiter = 0, miniter = 0, deltat;
    4.16      float avgtime=0.0;
    4.17 +    mode_t current_umask;
    4.18      
    4.19      /* check for timing request - get start time if so */
    4.20      if (mca_pls_tm_component.timing) {
    4.21 @@ -302,6 +306,13 @@
    4.22       * won't work on remote nodes
    4.23       */
    4.24      orte_pls_base_purge_mca_params(&env);
    4.25 +
    4.26 +    /* add our umask -- see big note in orted.c */
    4.27 +    current_umask = umask(0);
    4.28 +    umask(current_umask);
    4.29 +    asprintf(&var, "0%o", current_umask);
    4.30 +    opal_setenv("ORTE_DAEMON_UMASK_VALUE", var, true, &env);
    4.31 +    free(var);
    4.32      
    4.33      /* If we have a prefix, then modify the PATH and
    4.34          LD_LIBRARY_PATH environment variables. We only allow
     5.1 --- a/orte/tools/orted/orted.c	Thu Aug 16 02:53:17 2007 +0000
     5.2 +++ b/orte/tools/orted/orted.c	Thu Aug 16 03:20:40 2007 +0000
     5.3 @@ -35,6 +35,17 @@
     5.4  #include <fcntl.h>
     5.5  #include <errno.h>
     5.6  #include <signal.h>
     5.7 +#include <stdlib.h>
     5.8 +#ifdef HAVE_LIMITS_H
     5.9 +#include <limits.h>
    5.10 +#endif
    5.11 +#ifdef HAVE_SYS_TYPES_H
    5.12 +#include <sys/types.h>
    5.13 +#endif
    5.14 +#ifdef HAVE_SYS_STAT_H
    5.15 +#include <sys/stat.h>
    5.16 +#endif
    5.17 +#include <errno.h>
    5.18  
    5.19  #include "orte/orte_constants.h"
    5.20  
    5.21 @@ -204,6 +215,28 @@
    5.22      char *segment;
    5.23      int i;
    5.24      orte_buffer_t answer;
    5.25 +    char *umask_str;
    5.26 +
    5.27 +    /* Allow the PLS starters to pass us a umask to use, if required.
    5.28 +       Most starters by default can do something sane with the umask,
    5.29 +       but some (like TM) do not pass on the umask but instead inherit
    5.30 +       it form the root level process starter.  This has to happen
    5.31 +       before opal_init and everything else so that the couple of
    5.32 +       places that stash a umask end up with the correct value.  Only
    5.33 +       do it here (and not in orte_daemon) mainly to make it clear
    5.34 +       that this should only happen when starting an orted for the
    5.35 +       first time.  All startes I'm aware of that don't require an
    5.36 +       orted are smart enough to pass on a reasonable umask, so they
    5.37 +       wouldn't need this functionality anyway. */
    5.38 +    umask_str = getenv("ORTE_DAEMON_UMASK_VALUE");
    5.39 +    if (NULL != umask_str) {
    5.40 +        char *endptr;
    5.41 +        long mask = strtol(umask_str, &endptr, 8);
    5.42 +        if ((! (0 == mask && (EINVAL == errno || ERANGE == errno))) &&
    5.43 +            (*endptr == '\0')) {
    5.44 +            umask(mask);
    5.45 +        }
    5.46 +    }
    5.47  
    5.48      /* initialize the globals */
    5.49      memset(&orted_globals, 0, sizeof(orted_globals_t));