From b7a72feb1d115701b3dd5673c7967a7df92c4541 Mon Sep 17 00:00:00 2001 From: Edgar Gabriel Date: Wed, 27 Jun 2012 20:54:58 +0000 Subject: [PATCH] minor code cleanup and make the MPI_MODE_DELETE_ON_CLOSE work This commit was SVN r26685. --- ompi/mca/fs/ufs/fs_ufs_file_open.c | 27 ++--------- ompi/mca/io/ompio/io_ompio_file_open.c | 62 +++++++++----------------- 2 files changed, 26 insertions(+), 63 deletions(-) diff --git a/ompi/mca/fs/ufs/fs_ufs_file_open.c b/ompi/mca/fs/ufs/fs_ufs_file_open.c index d3902c5203..ae816330ed 100644 --- a/ompi/mca/fs/ufs/fs_ufs_file_open.c +++ b/ompi/mca/fs/ufs/fs_ufs_file_open.c @@ -9,7 +9,7 @@ * University of Stuttgart. All rights reserved. * Copyright (c) 2004-2005 The Regents of the University of California. * All rights reserved. - * Copyright (c) 2008-2010 University of Houston. All rights reserved. + * Copyright (c) 2008-2012 University of Houston. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -44,17 +44,14 @@ mca_fs_ufs_file_open (struct ompi_communicator_t *comm, mca_io_ompio_file_t *fh) { int amode; - /* int *fp = NULL;*/ int old_mask, perm; - if (fh->f_perm == OMPIO_PERM_NULL) - { + if (fh->f_perm == OMPIO_PERM_NULL) { old_mask = umask(022); umask(old_mask); perm = old_mask ^ 0666; } - else - { + else { perm = fh->f_perm; } @@ -70,24 +67,8 @@ mca_fs_ufs_file_open (struct ompi_communicator_t *comm, if (fh->f_amode & MPI_MODE_EXCL) amode = amode | O_EXCL; - /* - fp = (int*)malloc(sizeof(int)); - if (NULL == fp) - { - return OMPI_ERROR; - } - - *fp = open (filename, amode, perm); - if (-1 == *fp) - { - return OMPI_ERROR; - } - fh->fd = (void*)fp; - */ - fh->fd = open (filename, amode, perm); - if (-1 == fh->fd) - { + if (-1 == fh->fd) { return OMPI_ERROR; } diff --git a/ompi/mca/io/ompio/io_ompio_file_open.c b/ompi/mca/io/ompio/io_ompio_file_open.c index 24958614b0..28d25a95f8 100644 --- a/ompi/mca/io/ompio/io_ompio_file_open.c +++ b/ompi/mca/io/ompio/io_ompio_file_open.c @@ -40,19 +40,9 @@ mca_io_ompio_file_open (ompi_communicator_t *comm, ompi_file_t *fh) { int ret = OMPI_SUCCESS; - mca_io_ompio_data_t *data; + mca_io_ompio_data_t *data=NULL; int remote_arch; - if (&ompi_mpi_comm_null.comm == comm) { - ret = MPI_ERR_COMM; - goto fn_fail; - } - - if (OMPI_COMM_IS_INTER (comm)) { - ret = MPI_ERR_COMM; - goto fn_fail; - } - if ( ((amode&MPI_MODE_RDONLY)?1:0) + ((amode&MPI_MODE_RDWR)?1:0) + ((amode&MPI_MODE_WRONLY)?1:0) != 1 ) { ret = MPI_ERR_AMODE; @@ -87,7 +77,7 @@ mca_io_ompio_file_open (ompi_communicator_t *comm, ompi_io_ompio_set_file_defaults (&data->ompio_fh); - data->ompio_fh.f_filename = fh->f_filename; + data->ompio_fh.f_filename = strdup(fh->f_filename); if (NULL == data->ompio_fh.f_filename) { ret = OMPI_ERROR; goto fn_fail; @@ -97,15 +87,14 @@ mca_io_ompio_file_open (ompi_communicator_t *comm, if (MPI_INFO_NULL != info) { ret = ompi_info_dup (info, &data->ompio_fh.f_info); - } - if (OMPI_SUCCESS != ret) - { - goto fn_fail; + if (OMPI_SUCCESS != ret) + { + goto fn_fail; + } } */ - if (OMPI_SUCCESS != (ret = mca_fs_base_file_select (&data->ompio_fh, NULL))) { opal_output(1, "mca_fs_base_file_select() failed\n"); @@ -129,16 +118,14 @@ mca_io_ompio_file_open (ompi_communicator_t *comm, info, &data->ompio_fh); if (ret != OMPI_SUCCESS) { + ret = MPI_ERR_FILE; goto fn_fail; } fh->f_flags |= OMPIO_FILE_IS_OPEN; - return OMPI_SUCCESS; - fn_fail: - opal_output(1, "OPENING FILE \"%s\" FAILED\n", filename); - return OMPI_ERROR; + return ret; } int @@ -146,10 +133,17 @@ mca_io_ompio_file_close (ompi_file_t *fh) { int ret = OMPI_SUCCESS; mca_io_ompio_data_t *data; + int delete_flag = 0; data = (mca_io_ompio_data_t *) fh->f_io_selected_data; + if ( data->ompio_fh.f_amode & MPI_MODE_DELETE_ON_CLOSE ) { + delete_flag = 1; + } ret = data->ompio_fh.f_fs->fs_file_close (&data->ompio_fh); + if ( delete_flag && 0 == data->ompio_fh.f_rank ) { + mca_io_ompio_file_delete ( data->ompio_fh.f_filename, MPI_INFO_NULL ); + } mca_fs_base_file_unselect (&data->ompio_fh); mca_fbtl_base_file_unselect (&data->ompio_fh); @@ -184,35 +178,23 @@ mca_io_ompio_file_close (ompi_file_t *fh) ompi_datatype_destroy (&data->ompio_fh.f_iov_type); } - if (NULL != data->ompio_fh.f_comm) { - OBJ_RELEASE(data->ompio_fh.f_comm); - data->ompio_fh.f_comm = NULL; - } - /* - if (MPI_DATATYPE_NULL != data->ompio_fh.f_etype) - { - ompi_datatype_destroy (&data->ompio_fh.f_etype); - } - if (MPI_DATATYPE_NULL != data->ompio_fh.f_filetype) - { - ompi_datatype_destroy (&data->ompio_fh.f_filetype); - } - */ - /* if (NULL != data->ompio_fh.f_filename) { free (data->ompio_fh.f_filename); data->ompio_fh.f_filename = NULL; } - if (MPI_INFO_NULL != data->ompio_fh.f_info) - { - ompi_info_free (&data->ompio_fh.f_info); - } if (MPI_COMM_NULL != data->ompio_fh.f_comm) { ompi_comm_free (&data->ompio_fh.f_comm); } + + + /* + if (MPI_INFO_NULL != data->ompio_fh.f_info) + { + ompi_info_free (&data->ompio_fh.f_info); + } */ return ret;