22 #include "sion_error_handler.h" 29 #define DFUNCTION "_sion_write_header" 38 int rc = SION_SUCCESS;
43 sion_uint32 endianness_writeval;
44 sion_int32 sion_version, sion_version_patchlevel, sion_fileformat_version;
47 DPRINTFP((2, DFUNCTION, -1,
"enter write\n"));
52 if (nwrite != strlen(sionstr)) {
53 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(SIONID) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
55 DPRINTFP((32, DFUNCTION, -1,
" wrote sionstr nwrite=%lu\n", (
unsigned long) nwrite));
58 endianness_writeval = sion_filedesc->
endianness;
60 if (nwrite !=
sizeof(endianness_writeval)) {
61 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(endianness) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
63 DPRINTFP((32, DFUNCTION, -1,
" wrote endianness 0x%x nwrite=%lu\n", endianness_writeval, (
unsigned long) nwrite));
66 sion_version = 1000 * SION_MAIN_VERSION + SION_SUB_VERSION;
67 sion_version_patchlevel = SION_VERSION_PATCHLEVEL;
68 sion_fileformat_version = SION_FILEFORMAT_VERSION;
71 if (nwrite !=
sizeof(sion_version)) {
72 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(sion_version) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
74 DPRINTFP((32, DFUNCTION, -1,
" wrote sion_version %ld nwrite=%lu\n", sion_version, (
unsigned long) nwrite));
77 if (nwrite !=
sizeof(sion_version_patchlevel)) {
78 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(sion_version_patchlevel) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
80 DPRINTFP((32, DFUNCTION, -1,
" wrote sion_version_patchlevel %ld nwrite=%lu\n", sion_version_patchlevel, (
unsigned long) nwrite));
83 if (nwrite !=
sizeof(sion_fileformat_version)) {
84 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(sion_fileformat_version) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
86 DPRINTFP((32, DFUNCTION, -1,
" wrote sion_fileformat_version %ld nwrite=%lu\n", sion_fileformat_version, (
unsigned long) nwrite));
90 if (nwrite !=
sizeof(sion_filedesc->
fsblksize)) {
91 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(fsblksize) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
93 DPRINTFP((32, DFUNCTION, -1,
" wrote fsblksize %ld nwrite=%lu\n", sion_filedesc->
fsblksize, (
unsigned long) nwrite));
97 if (nwrite !=
sizeof(sion_filedesc->
ntasks)) {
98 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(ntasks) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
100 DPRINTFP((32, DFUNCTION, -1,
" wrote ntasks %ld nwrite=%lu\n", sion_filedesc->
ntasks, (
unsigned long) nwrite));
104 if (nwrite !=
sizeof(sion_filedesc->
nfiles)) {
105 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(nfiles) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
107 DPRINTFP((32, DFUNCTION, -1,
" wrote nfiles %d nwrite=%lu\n", sion_filedesc->
nfiles, (
unsigned long) nwrite));
111 if (nwrite !=
sizeof(sion_filedesc->
filenumber)) {
112 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(filenumber) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
114 DPRINTFP((32, DFUNCTION, -1,
" wrote filenumber %d nwrite=%lu\n", sion_filedesc->
filenumber, (
unsigned long) nwrite));
119 if (nwrite !=
sizeof(sion_filedesc->
flag1)) {
120 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(flag1) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
122 DPRINTFP((32, DFUNCTION, -1,
" wrote flag1 %lld nwrite=%lu\n", sion_filedesc->
flag1, (
unsigned long) nwrite));
126 if (nwrite !=
sizeof(sion_filedesc->
flag2)) {
127 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(flag2) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
129 DPRINTFP((32, DFUNCTION, -1,
" wrote flag2 %d nwrite=%lu\n", sion_filedesc->
flag2, (
unsigned long) nwrite));
132 if (sion_filedesc->
prefix==NULL) {
133 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(prefix) to file, data not available, aborting ...\n"));
135 lprefix = calloc(SION_FILENAME_LENGTH,1);
136 if (lprefix == NULL) {
137 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot allocate temporary memory of size %lu (lprefix), aborting ...\n", (
unsigned long) SION_FILENAME_LENGTH));
139 strncpy(lprefix,sion_filedesc->
prefix,SION_FILENAME_LENGTH);
141 if (nwrite != SION_FILENAME_LENGTH) {
143 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(lprefix) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
145 free(lprefix); lprefix=NULL;
146 DPRINTFP((32, DFUNCTION, -1,
" wrote prefix =%s\n", sion_filedesc->
prefix));
150 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(globalranks) to file, data not available, aborting ...\n"));
153 if (nwrite !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
154 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(globalranks) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
156 DPRINTFP((32, DFUNCTION, -1,
" wrote globalranks nwrite=%lu\n", (
unsigned long) nwrite));
160 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(chunksizes) to file, data not available, aborting ...\n"));
163 if (nwrite !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
164 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(chunksizes) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
166 DPRINTFP((32, DFUNCTION, -1,
" wrote chunksizes nwrite=%lu\n", (
unsigned long) nwrite));
169 DPRINTFP((2, DFUNCTION, -1,
"leave write\n"));
175 #define DFUNCTION "_sion_write_header_var_info" 184 int rc = SION_SUCCESS;
187 DPRINTFP((2, DFUNCTION, -1,
"enter write\n"));
196 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(maxusedchunks) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
198 DPRINTFP((32, DFUNCTION, -1,
" wrote maxusedchunks %d nwrite=%lu\n", sion_filedesc->
maxusedchunks, (
unsigned long) nwrite));
203 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(start_of_varheader) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
205 DPRINTFP((32, DFUNCTION, -1,
" wrote start_of_varheader %d nwrite=%lu\n", sion_filedesc->
start_of_varheader, (
unsigned long) nwrite));
208 DPRINTFP((2, DFUNCTION, -1,
"leave write\n"));
214 #define DFUNCTION "_sion_write_header_var_part_blocksizes" 223 int rc = SION_SUCCESS;
226 DPRINTFP((2, DFUNCTION, -1,
"enter write\n"));
230 DPRINTFP((16, DFUNCTION, sion_filedesc->
rank,
" after set fp to start_of_varheader, fileptr is at position %14lld\n",
_sion_file_get_position(sion_filedesc->
fileptr)));
234 if (nwrite !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
235 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(all_blockcount) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
237 DPRINTFP((32, DFUNCTION, -1,
" wrote all_blockcount field %d elements nwrite=%lu\n", sion_filedesc->
ntasks, (
unsigned long) nwrite));
242 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(all_blocksizes) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
244 DPRINTFP((32, DFUNCTION, -1,
" wrote all_blocksizes field %d elements nwrite=%lu\n", sion_filedesc->
ntasks * sion_filedesc->
maxusedchunks, (
unsigned long) nwrite));
247 DPRINTFP((2, DFUNCTION, -1,
"leave write\n"));
253 #define DFUNCTION "_sion_write_header_var_part_mapping" 263 sion_int32 mapping_size,
264 sion_int32 *mapping )
266 int rc = SION_SUCCESS, lrank;
270 DPRINTFP((2, DFUNCTION, -1,
"enter write\n"));
273 + sion_filedesc->
ntasks *
sizeof(sion_int64)
278 DPRINTFP((16, DFUNCTION, sion_filedesc->
rank,
" after set fp to start_of_varheader, fileptr is at position %14lld\n",
_sion_file_get_position(sion_filedesc->
fileptr)));
282 if (nwrite !=
sizeof(sion_int32)) {
283 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(mapping_size) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
285 DPRINTFP((32, DFUNCTION, -1,
" wrote mapping_size=%d elements nwrite=%lu\n", mapping_size, (
unsigned long) nwrite));
290 if (nwrite !=
sizeof(sion_int32) * 2 * mapping_size) {
291 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot write header(mapping) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
293 DPRINTFP((32, DFUNCTION, -1,
" wrote mapping field %d elements nwrite=%lu\n", 2 * mapping_size, (
unsigned long) nwrite*2*mapping_size));
294 for (lrank = 0; lrank < mapping_size; lrank++) {
295 DPRINTFP((2048, DFUNCTION, - 1,
" mapping[%4d]=(%10ld,%10ld)\n", lrank,mapping[lrank*2],mapping[lrank*2+1]));
298 DPRINTFP((32, DFUNCTION, -1,
" wrote no mapping field\n"));
301 DPRINTFP((2, DFUNCTION, -1,
"leave write\n"));
308 #define DFUNCTION "_sion_read_header_fix_part" 317 int rc = SION_SUCCESS;
319 char *sionstr, *lprefix;
320 sion_uint32 lendianness;
321 sion_int32 lfsblksize;
322 sion_int32 Rsion_version, Rsion_version_patchlevel, Rsion_fileformat_version;
324 DPRINTFP((2, DFUNCTION, -1,
"enter read fix_part\n"));
328 sionstr = (
char *) malloc(strlen(
SION_ID) *
sizeof(char));
330 if (nread != strlen(
SION_ID)) {
331 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(SION_ID) from file, aborting ... (%lu!=%lu)\n",
332 (
unsigned long) nread, (
unsigned long) strlen(
SION_ID)));
334 DPRINTFP((32, DFUNCTION, -1,
" sionstr =>%c%c%c%c<\n", sionstr[0], sionstr[1], sionstr[2], sionstr[3]));
337 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: not a sion file(ID: %c%c%c%c)\n", sionstr[0], sionstr[1], sionstr[2], sionstr[3]));
343 if (nread !=
sizeof(lendianness)) {
344 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header: cannot read header(endianness) from file, aborting ... (%lu!=%lu)\n",(
unsigned long) nread, (
unsigned long)
sizeof(lendianness)));
349 DPRINTFP((32, DFUNCTION, -1,
" endianness =0x%x swapbytes=%d\n", sion_filedesc->
endianness, sion_filedesc->
swapbytes));
354 if (nread !=
sizeof(Rsion_version)) {
355 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(sion_version) from file, aborting ... (%lu!=%lu)\n", (
unsigned long) nread, (
unsigned long)
sizeof(Rsion_version)));
357 sion_swap(&Rsion_version, &Rsion_version,
sizeof(Rsion_version), 1, sion_filedesc->
swapbytes);
359 DPRINTFP((32, DFUNCTION, -1,
" sion_version=%d\n", Rsion_version));
361 nread =
_sion_file_read(&Rsion_version_patchlevel,
sizeof(Rsion_version_patchlevel), sion_filedesc->
fileptr);
362 if (nread !=
sizeof(Rsion_version_patchlevel)) {
363 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(sion_version_patchlevel) from file, aborting ... (%lu!=%lu)\n",
364 (
unsigned long) nread, (
unsigned long)
sizeof(Rsion_version_patchlevel)));
366 sion_swap(&Rsion_version_patchlevel, &Rsion_version_patchlevel,
sizeof(Rsion_version_patchlevel), 1, sion_filedesc->
swapbytes);
368 DPRINTFP((32, DFUNCTION, -1,
" sion_version_patchlevel=%d\n", (
int) Rsion_version_patchlevel));
370 nread =
_sion_file_read(&Rsion_fileformat_version,
sizeof(Rsion_fileformat_version), sion_filedesc->
fileptr);
371 if (nread !=
sizeof(Rsion_fileformat_version)) {
372 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(sion_fileformat_version) from file, aborting ... (%lu!=%lu)\n",
373 (
unsigned long) nread, (
unsigned long)
sizeof(Rsion_fileformat_version)));
375 sion_swap(&Rsion_fileformat_version, &Rsion_fileformat_version,
sizeof(Rsion_fileformat_version), 1, sion_filedesc->
swapbytes);
376 sion_filedesc->
fileversion=Rsion_fileformat_version;
377 DPRINTFP((32, DFUNCTION, -1,
" sion_fileformat_version=%d\n", (
int) Rsion_fileformat_version));
379 if (Rsion_fileformat_version != SION_FILEFORMAT_VERSION) {
380 if(Rsion_fileformat_version<2) {
381 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"sionlib: FATAL ERROR: file format version of file differs, aborting ... (%lu!=%lu)\n",
382 (
unsigned long) Rsion_fileformat_version, (
unsigned long) SION_FILEFORMAT_VERSION));
384 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_WARN,
"sionlib: FATAL WARNING: old file format version of file differs, trying to read ... (%lu!=%lu)\n",
385 (
unsigned long) Rsion_fileformat_version, (
unsigned long) SION_FILEFORMAT_VERSION);
392 if (nread !=
sizeof(sion_filedesc->
fsblksize)) {
393 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(fsblksize) from file, aborting ... (%lu!=%lu)\n",
394 (
unsigned long) nread, (
unsigned long)
sizeof(sion_filedesc->
fsblksize)));
397 DPRINTFP((32, DFUNCTION, -1,
" fsblksize=%d\n", sion_filedesc->
fsblksize));
401 if (nread !=
sizeof(sion_filedesc->
ntasks)) {
402 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(ntasks) from file, aborting ... (%lu!=%lu)\n",
403 (
unsigned long) nread, (
unsigned long)
sizeof(sion_filedesc->
ntasks)));
406 DPRINTFP((32, DFUNCTION, -1,
" ntasks =%d\n", sion_filedesc->
ntasks));
410 if (nread !=
sizeof(sion_filedesc->
nfiles)) {
411 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(nfiles) from file, aborting ... (%lu!=%lu)\n",
412 (
unsigned long) nread, (
unsigned long)
sizeof(sion_filedesc->
nfiles)));
415 DPRINTFP((32, DFUNCTION, -1,
" nfiles =%d\n", sion_filedesc->
nfiles));
420 if (nread !=
sizeof(sion_filedesc->
filenumber)) {
421 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(filenumber) from file, aborting ... (%lu!=%lu)\n",
422 (
unsigned long) nread, (
unsigned long)
sizeof(sion_filedesc->
filenumber)));
428 DPRINTFP((32, DFUNCTION, -1,
" filenumber =%d\n", sion_filedesc->
filenumber));
432 if(Rsion_fileformat_version>=3) {
434 if (nread !=
sizeof(sion_filedesc->
flag1)) {
435 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(flag1) from file, aborting ... (%lu!=%lu)\n",
436 (
unsigned long) nread, (
unsigned long)
sizeof(sion_filedesc->
flag1)));
442 DPRINTFP((32, DFUNCTION, -1,
" flag1 =%lld\n", sion_filedesc->
flag1));
444 if(Rsion_fileformat_version>=5) {
459 if(Rsion_fileformat_version>=3) {
461 if (nread !=
sizeof(sion_filedesc->
flag2)) {
462 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(flag2) from file, aborting ... (%lu!=%lu)\n",
463 (
unsigned long) nread, (
unsigned long)
sizeof(sion_filedesc->
flag2)));
469 DPRINTFP((32, DFUNCTION, -1,
" flag2 =%lld\n", sion_filedesc->
flag2));
472 lprefix = malloc(SION_FILENAME_LENGTH);
474 if (nread != SION_FILENAME_LENGTH) {
475 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_fix_part: cannot read header(lprefix) from file, aborting ... (%lu!=%d)\n", (
unsigned long) nread, SION_FILENAME_LENGTH));
477 sion_filedesc->
prefix=strdup(lprefix);
479 DPRINTFP((32, DFUNCTION, -1,
" prefix =%s\n", sion_filedesc->
prefix));
482 DPRINTFTS(sion_filedesc->
rank,
"before purge");
484 DPRINTFTS(sion_filedesc->
rank,
"after purge");
488 DPRINTFP((2, DFUNCTION, -1,
"leave read fix_part\n"));
494 #define DFUNCTION "_sion_read_header_var_part" 503 int rc = SION_SUCCESS;
505 sion_int32 Rmaxchunks;
507 DPRINTFP((32, DFUNCTION, -1,
"enter read var_part\n"));
512 if (nread !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
513 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part: cannot read header(globalranks) from file, aborting ... (%d)\n", sion_filedesc->
ntasks));
519 if (nread !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
520 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part: cannot read header(chunksizes) from file, aborting ... (%d!=%lu)\n", sion_filedesc->
ntasks, (
unsigned long) nread));
526 if (nread !=
sizeof(Rmaxchunks)) {
527 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part: cannot read header(maxchunks) from file, aborting ... (%lu!=%lu)\n",
528 (
unsigned long) nread, (
unsigned long)
sizeof(Rmaxchunks)));
531 DPRINTFP((32, DFUNCTION, -1,
" maxchunks=%d\n", Rmaxchunks));
539 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part: cannot read header(start_of_varheader) from file, aborting ... (%lu!=%lu)\n",
543 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part: bad value for start_of_varheader (=%lu), aborting ...\n",
548 DPRINTFP((32, DFUNCTION, -1,
"leave read var_part start_of_varheader=%lld\n", sion_filedesc->
start_of_varheader));
555 #define DFUNCTION "_sion_rd_hdr_var_prt_blkcnt_to_field" 568 int rc = SION_SUCCESS;
571 DPRINTFP((32, DFUNCTION, -1,
"enter\n"));
574 if (field_size < sion_filedesc->ntasks) {
575 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_blockcount_to_field: cannot read header(blocksizes) field too small, aborting ... (%d<%d)\n", field_size, sion_filedesc->
ntasks));
582 if (nread !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
583 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_blockcount_to_field: cannot read blocksizes from meta block 2 of the file, aborting ... (%d,%d)\n", sion_filedesc->
ntasks, nread));
588 DPRINTFP((32, DFUNCTION, -1,
"leave \n"));
595 #define DFUNCTION "_sion_rd_hdr_vr_prt_nxtblksizes_to_field" 610 int rc = SION_SUCCESS;
612 DPRINTFP((32, DFUNCTION, -1,
"enter\n"));
615 if (field_size < sion_filedesc->ntasks) {
616 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_nextblocksizes_to_field: cannot read header(blocksizes) field too small, aborting ... (%d<%d)\n", field_size, sion_filedesc->
ntasks));
619 if (nread !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
620 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_nextblocksizes_to_field: cannot read blocksizes from meta block 2 of the file, aborting ... (%d,%d)\n", sion_filedesc->
ntasks, nread));
625 DPRINTFP((32, DFUNCTION, -1,
"leave \n"));
632 #define DFUNCTION "_sion_read_header_var_part_blocksizes" 641 int rc = SION_SUCCESS;
645 DPRINTFP((32, DFUNCTION, -1,
"enter read\n"));
653 if (nread !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
654 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_blocksizes: cannot read header from file(sion_blockcount), aborting ... (%d)\n", sion_filedesc->
ntasks));
657 for (i = 0; i < sion_filedesc->
ntasks; i++)
658 DPRINTFP((2048, DFUNCTION, -1,
" read, numblocks on task %02d is %10lld\n", i, sion_filedesc->
all_blockcount[i]));
663 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_blocksizes: cannot read header(sion_blocksizes) from file, aborting ... (%lu!=%lu)\n",
664 (
unsigned long) sion_filedesc->
ntasks * sion_filedesc->
maxusedchunks, (
unsigned long) nread));
668 for (i = 0; i < sion_filedesc->
ntasks; i++)
669 DPRINTFP((2048, DFUNCTION, -1,
" read, blocksize[0] on task %02d is %10lld\n", i, sion_filedesc->
all_blocksizes[0*sion_filedesc->
ntasks+i]));
671 DPRINTFP((32, DFUNCTION, -1,
"leave read\n"));
678 #define DFUNCTION "_sion_read_header_var_part_mapping" 689 int rc = SION_SUCCESS;
693 DPRINTFP((32, DFUNCTION, -1,
"enter read\n"));
696 + sion_filedesc->
ntasks *
sizeof(sion_int64)
706 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping: cannot read header(mapping_size) from file, aborting ... (%d)\n", nread));
709 DPRINTFP((32, DFUNCTION, -1,
"mapping_size=%ld\n", (
long) sion_filedesc->
mapping_size));
712 sion_filedesc->
mapping = (sion_int32 *) malloc(sion_filedesc->
mapping_size * 2 *
sizeof(sion_int32));
713 if (sion_filedesc->
mapping == NULL) {
714 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping: cannot allocate temporary memory of size %lu (mapping), aborting ...\n", (
unsigned long) 2 * sion_filedesc->
mapping_size *
sizeof(sion_int64)));
716 DPRINTFP((32, DFUNCTION, -1,
"alloc mapping vector size=%d (%lu bytes)\n", sion_filedesc->
mapping_size, (
long) sion_filedesc->
mapping_size * 2 *
sizeof(sion_int32)));
720 DPRINTFP((32, DFUNCTION, -1,
"read mapping, %d \n", nread));
721 if (nread != (
sizeof(sion_int32) * sion_filedesc->
mapping_size * 2)) {
722 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping: cannot read header(mapping) from file, aborting ... (%d!=%lu)\n", sion_filedesc->
mapping_size*2, (
unsigned long) nread));
726 DPRINTFP((32, DFUNCTION, -1,
"leave read\n"));
733 #define DFUNCTION "_sion_read_header_var_part_locations_rank" 743 int rc = SION_SUCCESS;
747 sion_int64 helpint64;
749 DPRINTFP((32, DFUNCTION, -1,
"enter read for rank %d of %d\n",sion_filedesc->
rank,sion_filedesc->
ntasks));
757 numblocks = helpint64;
758 if (nread !=
sizeof(sion_int64)) {
759 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_locations_rank: cannot read header(numblocks) from file, aborting ... (%d)\n", sion_filedesc->
ntasks));
765 for (i = 0; i < numblocks; i++) {
768 + (i + 1) * sion_filedesc->
ntasks *
sizeof(sion_int64)
769 + sion_filedesc->
rank *
sizeof(sion_int64);
774 if (nread !=
sizeof(sion_int64)) {
775 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_locations_rank: cannot read header(blocksizes) from file, aborting ... (%d!=%lu)\n", 1, (
unsigned long) nread));
779 DPRINTFP((32,
"_sion_read_header_var_part_locations_rank", -1,
"read blocksizes[%i], %lld start_of_varheader=%lld\n", i, helpint64, sion_filedesc->
start_of_varheader));
783 DPRINTFP((32, DFUNCTION, -1,
"leave read\n"));
790 #define DFUNCTION "_sion_read_header_var_part_mapping_rank" 801 int rc = SION_SUCCESS;
805 sion_int32 helpint32;
807 DPRINTFP((32, DFUNCTION, -1,
"enter read for rank %d of %d\n",sion_filedesc->
rank,sion_filedesc->
ntasks));
810 + sion_filedesc->
ntasks *
sizeof(sion_int64)
819 if (nread !=
sizeof(sion_int32)) {
820 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping_rank: cannot read header(mapping_size) from file, aborting ... (%d)\n", sion_filedesc->
ntasks));
824 DPRINTFP((32,
"_sion_read_header_var_part_mapping_rank", -1,
"read mapping_size %d \n", msize));
826 if((sion_filedesc->
rank<0) || (sion_filedesc->
rank>=msize)) {
827 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping_rank: wrong rank %d not between 0 .. %d aborting ...\n", sion_filedesc->
rank,msize));
832 + sion_filedesc->
ntasks *
sizeof(sion_int64)
835 + 2*sion_filedesc->
rank*
sizeof(sion_int32);
843 sion_filedesc->
mapping = (sion_int32 *) malloc(sion_filedesc->
mapping_size * 2 *
sizeof(sion_int32));
844 if (sion_filedesc->
mapping == NULL) {
845 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping: cannot allocate temporary memory of size %lu (mapping), aborting ...\n", (
unsigned long) 2 * sion_filedesc->
mapping_size *
sizeof(sion_int64)));
847 DPRINTFP((32, DFUNCTION, -1,
"alloc mapping vector size=%d (%lu bytes)\n", sion_filedesc->
mapping_size, (
long) sion_filedesc->
mapping_size * 2 *
sizeof(sion_int32)));
851 DPRINTFP((32, DFUNCTION, -1,
"read mapping, %d \n", nread));
852 if (nread != (
sizeof(sion_int32) * sion_filedesc->
mapping_size * 2)) {
853 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_mapping: cannot read header(mapping) from file, aborting ... (%d!=%lu)\n", sion_filedesc->
mapping_size*2, (
unsigned long) nread));
857 DPRINTFP((32, DFUNCTION, -1,
"leave read filenumber=%d lrank=%d\n",sion_filedesc->
mapping[0], sion_filedesc->
mapping[1]));
865 #define DFUNCTION "_sion_wr_hdr_var_prt_blkcnt_from_field" 881 DPRINTFP((32, DFUNCTION, -1,
"enter\n"));
884 if (field_size < sion_filedesc->ntasks) {
885 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_read_header_var_part_blockcount_to_field: cannot read header(blocksizes) field too small, aborting ... (%d<%d)\n", field_size, sion_filedesc->
ntasks));
892 if (nwrite !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
893 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header_var_part_blockcount_from_field: cannot write header(all_blockcount) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
895 DPRINTFP((32, DFUNCTION, -1,
" wrote all_blockcount field %d elements nwrite=%lu\n", sion_filedesc->
ntasks, (
unsigned long) nwrite));
897 DPRINTFP((32, DFUNCTION, -1,
"leave \n"));
904 #define DFUNCTION "_sion_wr_hdr_vr_prt_nxtblksizes_from_field" 921 DPRINTFP((32, DFUNCTION, -1,
"enter\n"));
924 if (field_size < sion_filedesc->ntasks) {
925 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header_var_part_nextblocksizes_from_field: cannot write header(blocksizes) field too small, aborting ... (%d<%d)\n", field_size, sion_filedesc->
ntasks));
928 if (nwrite !=
sizeof(sion_int64) * sion_filedesc->
ntasks) {
929 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_write_header_var_part_nextblocksizes_from_field: cannot write header(all_blocksizes) to file, aborting ... (%lu)\n", (
unsigned long) nwrite));
931 DPRINTFP((32, DFUNCTION, -1,
" wrote all_blocksizes field %d elements nwrite=%lu\n", sion_filedesc->
ntasks, (
unsigned long) nwrite));
933 DPRINTFP((32, DFUNCTION, -1,
"leave \n"));
sion_int64 _sion_file_write(const void *data, sion_int64 bytes, _sion_fileptr *sion_fileptr)
Write data to file.
sion_int64 _sion_file_get_position(_sion_fileptr *sion_fileptr)
Get new position in file.
sion_int64 _sion_file_set_position(_sion_fileptr *sion_fileptr, sion_int64 startpointer)
Set new position in file.
Sion File Descriptor Structure.
int sion_get_endianness(void)
Return endianness.
sion_int64 * all_blockcount
int _sion_file_purge(_sion_fileptr *sion_fileptr)
Purge data to file.
sion_int64 _sion_file_read(void *data, sion_int64 bytes, _sion_fileptr *sion_fileptr)
Read data from file.
sion_int32 filesionpatchlevel
sion_int64 * all_globalranks
int _sion_realloc_filedesc_blocklist(_sion_filedesc *sion_filedesc, sion_int32 maxchunks)
Increase the memory used by the internal sion structure for the blocklist.
char * sion_keyval_type_to_str(int type)
Returns key value mode as string.
sion_int64 * all_chunksizes
sion_int32 filesionversion
sion_int64 start_of_varheader
sion_int64 * all_blocksizes
int _sion_file_flush(_sion_fileptr *sion_fileptr)
Flush data to file.
void sion_swap(void *target, void *source, int size, int n, int aflag)