void ADIOI_NTFS_IwriteContig(ADIO_File fd, void *buf, int count, MPI_Datatype datatype, int file_ptr_type, ADIO_Offset offset, ADIO_Request *request, int *error_code) { int len, typesize; int err; static char myname[] = "ADIOI_NTFS_IwriteContig"; MPI_Type_size(datatype, &typesize); len = count * typesize; if (file_ptr_type == ADIO_INDIVIDUAL) { offset = fd->fp_ind; } err = ADIOI_NTFS_aio(fd, buf, len, offset, 1, request); if (file_ptr_type == ADIO_INDIVIDUAL) { fd->fp_ind += len; } /* --BEGIN ERROR HANDLING-- */ if (err != MPI_SUCCESS) { *error_code = MPIO_Err_create_code(err, MPIR_ERR_RECOVERABLE, myname, __LINE__, MPI_ERR_IO, "**io", 0); return; } /* --END ERROR HANDLING-- */ *error_code = MPI_SUCCESS; fd->fp_sys_posn = -1; /* set it to null. */ }
void ADIOI_NTFS_IwriteContig(ADIO_File fd, void *buf, int count, MPI_Datatype datatype,int file_ptr_type, ADIO_Offset offset, ADIO_Request *request, int *error_code) { ADIO_Status status; int err=-1; int len,typesize; DWORD error; #ifndef PRINT_ERR_MSG static char myname[] = "ADIOI_NTFS_IWRITECONTIG"; #endif *request = ADIOI_Malloc_request(); (*request)->optype = ADIOI_WRITE; (*request)->fd = fd; (*request)->datatype = datatype; MPI_Type_size(datatype, &typesize); len = count * typesize; (*request)->nbytes = (*request)->totransfer = len; (*request)->buf = buf; if (file_ptr_type == ADIO_INDIVIDUAL) offset = fd->fp_ind; (*request)->offset = offset; err = ADIOI_NTFS_aio(fd, 1, *request,0,&error); if (file_ptr_type == ADIO_INDIVIDUAL) fd->fp_ind += len; if(error == ERROR_IO_PENDING) { (*request)->queued = 1; ADIOI_Add_req_to_list(request); } else { (*request)->queued = 0; } #ifdef PRINT_ERR_MSG *error_code = (err == -1) ? MPI_ERR_UNKNOWN : MPI_SUCCESS; #else if (err == -1) { *error_code = MPIR_Err_setmsg(MPI_ERR_IO, MPIR_ADIO_ERROR, myname, "I/O Error", "I/O Error: %s", ad_ntfs_error(error)); ADIOI_Error(fd, *error_code, myname); } else *error_code = MPI_SUCCESS; #endif fd->fp_sys_posn = -1; /* set it to null. */ fd->async_count++; }
void ADIOI_NTFS_IwriteContig(ADIO_File fd, void *buf, int count, MPI_Datatype datatype, int file_ptr_type, ADIO_Offset offset, ADIO_Request *request, int *error_code) { int len, typesize; int err=FALSE; #ifndef PRINT_ERR_MSG static char myname[] = "ADIOI_NTFS_IWRITECONTIG"; #endif *request = ADIOI_Malloc_request(); (*request)->optype = ADIOI_WRITE; (*request)->fd = fd; (*request)->datatype = datatype; MPI_Type_size(datatype, &typesize); len = count * typesize; if (file_ptr_type == ADIO_INDIVIDUAL) offset = fd->fp_ind; err = ADIOI_NTFS_aio(fd, buf, len, offset, 1, &((*request)->handle)); if (file_ptr_type == ADIO_INDIVIDUAL) fd->fp_ind += len; (*request)->queued = 1; ADIOI_Add_req_to_list(request); #ifdef PRINT_ERR_MSG *error_code = (err == FALSE) ? MPI_ERR_UNKNOWN : MPI_SUCCESS; #else if (err == FALSE) { *error_code = MPIR_Err_setmsg(MPI_ERR_IO, MPIR_ADIO_ERROR, myname, "I/O Error", "%s", strerror(errno)); ADIOI_Error(fd, *error_code, myname); } else *error_code = MPI_SUCCESS; #endif fd->fp_sys_posn = -1; /* set it to null. */ fd->async_count++; }