Author: goodell Date: 2012-11-26 17:49:26 -0600 (Mon, 26 Nov 2012) New Revision: 10671 Modified: mpich2/trunk/src/mpi/romio/adio/common/ad_close.c mpich2/trunk/src/mpi/romio/adio/common/ad_delete.c mpich2/trunk/src/mpi/romio/adio/include/adioi.h Log: Revert "only one task should actually delete in ADIO_Close" This reverts r10641 and should fix most/all of tt#1758. A better fix should be considered. Modified: mpich2/trunk/src/mpi/romio/adio/common/ad_close.c =================================================================== --- mpich2/trunk/src/mpi/romio/adio/common/ad_close.c 2012-11-26 23:08:04 UTC (rev 10670) +++ mpich2/trunk/src/mpi/romio/adio/common/ad_close.c 2012-11-26 23:49:26 UTC (rev 10671) @@ -14,8 +14,7 @@ void ADIO_Close(ADIO_File fd, int *error_code) { - int err = MPI_SUCCESS; - int i, j, k, combiner, myrank, is_contig; + int i, j, k, combiner, myrank, err, is_contig; static char myname[] = "ADIO_CLOSE"; if (fd->async_count) { @@ -48,21 +47,14 @@ } if (fd->access_mode & ADIO_DELETE_ON_CLOSE) { - int is_agg_ldr = 0; - ADIOI_IS_AGG_LEADER(fd, &is_agg_ldr); /* if we are doing aggregation and deferred open, then it's possible * that rank 0 does not have access to the file. make sure only an * aggregator deletes the file.*/ MPI_Comm_rank(fd->comm, &myrank); - if (is_agg_ldr) { - ADIO_Delete(fd->filename, &err); + if (myrank == fd->hints->ranklist[0]) { + ADIO_Delete(fd->filename, &err); } MPI_Barrier(fd->comm); - MPI_Bcast(&err, 1, MPI_INT, fd->hints->ranklist[0], fd->comm); - if (err != MPI_SUCCESS) { - *error_code = err; - return; - } } if (fd->fortran_handle != -1) { Modified: mpich2/trunk/src/mpi/romio/adio/common/ad_delete.c =================================================================== --- mpich2/trunk/src/mpi/romio/adio/common/ad_delete.c 2012-11-26 23:08:04 UTC (rev 10670) +++ mpich2/trunk/src/mpi/romio/adio/common/ad_delete.c 2012-11-26 23:49:26 UTC (rev 10671) @@ -18,7 +18,9 @@ err = unlink(filename); if (err == -1) { - *error_code = ADIOI_Err_create_code(myname, filename, errno); + *error_code = MPIO_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, + myname, __LINE__, MPI_ERR_IO, "**io", + "**io %s", strerror(errno)); return; } else *error_code = MPI_SUCCESS; Modified: mpich2/trunk/src/mpi/romio/adio/include/adioi.h =================================================================== --- mpich2/trunk/src/mpi/romio/adio/include/adioi.h 2012-11-26 23:08:04 UTC (rev 10670) +++ mpich2/trunk/src/mpi/romio/adio/include/adioi.h 2012-11-26 23:49:26 UTC (rev 10671) @@ -78,13 +78,6 @@ }; -#define ADIOI_IS_AGG_LEADER(fh_, is_agg_p_) \ - do { \ - int rank_; \ - MPI_Comm_rank((fh_)->comm, &rank_); \ - *(is_agg_p_) = ((fh_)->hints->ranklist[0] == 0); \ - } while (0) - typedef struct ADIOI_Datarep { char *name; void *state;