1
1
openmpi/ompi/mca/fs/ufs/fs_ufs.h
Edgar Gabriel be0de21e6f fs/ufs and fbtl/posix: cleanup lock management
This commit looks large, but its really mostly a cleanup step.
1. introduce proper error handling for the return values of fcntl and the fbtl_posix_lock function
2. rename a parameter to more accurately reflect what it does
3. introduce an mca parameter in the fs/ufs component that allows to control
   what the level of locking the user would like to enforce
4. move the initialization of the fs_block_size parameter from fs/ufs into the
   common/ompio component. An fs component might be allowed to overwrite this
   value, but none of the actual fs components do that.

Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2017-10-19 14:56:28 -05:00

88 строки
3.1 KiB
C

/*
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2006 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2008-2016 University of Houston. All rights reserved.
* Copyright (c) 2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#ifndef MCA_FS_UFS_H
#define MCA_FS_UFS_H
#include "ompi_config.h"
#include "ompi/mca/mca.h"
#include "ompi/mca/fs/fs.h"
#include "ompi/mca/common/ompio/common_ompio.h"
extern int mca_fs_ufs_priority;
extern int mca_fs_ufs_lock_algorithm;
#define FS_UFS_LOCK_AUTO 0
#define FS_UFS_LOCK_NEVER 1
#define FS_UFS_LOCK_ENTIRE_FILE 2
#define FS_UFS_LOCK_RANGES 3
BEGIN_C_DECLS
int mca_fs_ufs_component_init_query(bool enable_progress_threads,
bool enable_mpi_threads);
struct mca_fs_base_module_1_0_0_t *
mca_fs_ufs_component_file_query (mca_io_ompio_file_t *fh, int *priority);
int mca_fs_ufs_component_file_unquery (mca_io_ompio_file_t *file);
int mca_fs_ufs_module_init (mca_io_ompio_file_t *file);
int mca_fs_ufs_module_finalize (mca_io_ompio_file_t *file);
OMPI_MODULE_DECLSPEC extern mca_fs_base_component_2_0_0_t mca_fs_ufs_component;
/*
* ******************************************************************
* ********* functions which are implemented in this module *********
* ******************************************************************
*/
int mca_fs_ufs_file_open (struct ompi_communicator_t *comm,
const char *filename,
int amode,
struct opal_info_t *info,
mca_io_ompio_file_t *fh);
int mca_fs_ufs_file_close (mca_io_ompio_file_t *fh);
int mca_fs_ufs_file_delete (char *filename,
struct opal_info_t *info);
int mca_fs_ufs_file_set_size (mca_io_ompio_file_t *fh,
OMPI_MPI_OFFSET_TYPE size);
int mca_fs_ufs_file_get_size (mca_io_ompio_file_t *fh,
OMPI_MPI_OFFSET_TYPE *size);
int mca_fs_ufs_file_sync (mca_io_ompio_file_t *fh);
int mca_fs_ufs_file_seek (mca_io_ompio_file_t *fh,
OMPI_MPI_OFFSET_TYPE offset,
int whence);
/*
* ******************************************************************
* ************ functions implemented in this module end ************
* ******************************************************************
*/
END_C_DECLS
#endif /* MCA_FS_UFS_H */