This source file includes following definitions.
- ADIOI_PVFS_Fcntl
1
2
3
4
5
6
7
8 #include "ad_pvfs.h"
9 #include "adio_extern.h"
10
11 void ADIOI_PVFS_Fcntl(ADIO_File fd, int flag, ADIO_Fcntl_t *fcntl_struct,
12 int *error_code)
13 {
14 static char myname[] = "ADIOI_PVFS_FCNTL";
15
16 switch(flag) {
17 case ADIO_FCNTL_GET_FSIZE:
18 #ifdef ADIOI_MPE_LOGGING
19 MPE_Log_event( ADIOI_MPE_lseek_a, 0, NULL );
20 #endif
21 fcntl_struct->fsize = pvfs_lseek64(fd->fd_sys, 0, SEEK_END);
22 #ifdef ADIOI_MPE_LOGGING
23 MPE_Log_event( ADIOI_MPE_lseek_b, 0, NULL );
24 #endif
25 if (fd->fp_sys_posn != -1) {
26 #ifdef ADIOI_MPE_LOGGING
27 MPE_Log_event( ADIOI_MPE_lseek_a, 0, NULL );
28 #endif
29 pvfs_lseek64(fd->fd_sys, fd->fp_sys_posn, SEEK_SET);
30 #ifdef ADIOI_MPE_LOGGING
31 MPE_Log_event( ADIOI_MPE_lseek_b, 0, NULL );
32 #endif
33 }
34 if (fcntl_struct->fsize == -1) {
35 *error_code = MPIO_Err_create_code(MPI_SUCCESS,
36 MPIR_ERR_RECOVERABLE, myname,
37 __LINE__, MPI_ERR_IO, "**io",
38 "**io %s", strerror(errno));
39 }
40 else *error_code = MPI_SUCCESS;
41 break;
42
43 case ADIO_FCNTL_SET_DISKSPACE:
44 ADIOI_GEN_Prealloc(fd, fcntl_struct->diskspace, error_code);
45 break;
46
47 case ADIO_FCNTL_SET_ATOMICITY:
48 fd->atomicity = 0;
49
50 if (fcntl_struct->atomicity != 0) {
51 *error_code = MPIO_Err_create_code(MPI_SUCCESS,
52 MPIR_ERR_RECOVERABLE,
53 myname, __LINE__,
54 MPI_ERR_UNSUPPORTED_OPERATION,
55 "PVFS does not support atomic mode",
56 0);
57 return;
58 }
59
60 break;
61
62 default:
63
64 *error_code = MPIO_Err_create_code(MPI_SUCCESS,
65 MPIR_ERR_RECOVERABLE,
66 myname, __LINE__,
67 MPI_ERR_ARG,
68 "**flag", "**flag %d", flag);
69 return;
70
71 }
72 }